WBDAIDQZ3J7ON5DWIDA2L4OJEEZCUP2RLEWJSNR4AC3SDBHDBXIQC
EC2P5BP44P2O454ZXINIKXFW3PJMMDB4KNIIH6GGZGYSD5SRWEWAC
DFFMZSJOCLTBA3IGRYS2ZIJNO2MC3VLBBU42QL5DFY2SMCNFXPIAC
Z3E7XJOW6NSBDYRDKSGTOAEJSPATAUX4JUFCL4DIL3372GL4K52QC
HUH4SI4HXIP72KQSJP2I4ELHX5KUQZM7FFGKZZGJ33DF7E3JHMYQC
6OD22ZHHEANTKREVSWHHAWEDVUFWTZHUKJD35ICBPWYERYPABGDQC
TQ57VE45BHV7MOZ6GKTYZEAMAOTXLPQ3ROCWJ2FUCITQWOYVMUIAC
ZGS4FTTFBXTF2SHYTPAJJBWEUVWVYXPSJVEFI5NYJWTW273B4NHAC
NJ3CLHJNB5S7K7XHXLMDGD3RDVIFIHYNDMFQJF3CUVMAK6E436YQC
OXUPEPQ6UNSCCKWT4YV4KSZIK5Q4WYYSAHIC3VZMMJ63NXXC3GVAC
KHAKSWQANUZL7B3EYF6GWTDGSUR2WVZGU5BPPI6OKYIPCD3QMWAQC
VG7NEAKILCJJNIATKAPEOTUHKBZJJMPMS6HYT6QFPSF6ZB2ADWUQC
YJ3YEICSBUHMDVJB6W3ZOOVWLTAXRDCIKOGNN6HRP6N3HWQTDGVAC
DLEEYV4V7X337ZJJM775DPARMCMXMLOBXGSBCWDMZBHYKSQTGZCQC
OL5CSNTOYADQ6NOJS5YRWY4QIAWEQRGCJGBHNSRSMJD2I43COJ7AC
// declare global {
// interface Array<T extends { hash(): string }> {
// hash(): string
// }
//
// interface Number {
// hash(): string
// }
//
// interface String {
// hash(): String
// }
// }
//
// Array.prototype.hash = function () {
// return hashArray(this);
// }
//
// Number.prototype.hash = function () {
// return this.toString();
// }
//
// String.prototype.hash = function () {
// return this;
// }
//
// function hashArray<T extends { hash(): string }>(arr: T[]): string {
// return arr.map(elt => hashCode(elt.hash())).reduce((pv, cv) => 31 * pv + cv).hash();
// }
//