#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef unsigned char uchar;
//typedef unsigned long long ulong;
int check(uchar * pwd)
{
uchar a[] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
int d = strlen((char*)a), i, j;
for (i = 0, j = strlen((char*)pwd); i < j; i++) {
if (strchr((char*)a, (char)pwd[i]) == NULL) pwd[i] = a[pwd[i] % d];
if (i > 0) pwd[i - 1] = a[(((pwd[i - 1] ^ pwd[i]) << 1) * pwd[i]) % d];
}
return !strcmp((char*)pwd, "Tp9?k=HDN&nD{9 ~JzUYG3h>lF {`> K<% pm~J>y E=2B=y+<x+nf@*%kDZ;z/'WYbWOk'usw>Z");
}
int main(int argc, char ** argv)
{
uchar pwd[256]="AeMzQ8oZk31W4B(L\\1Uh$,9m</cZeQ\"LBygghYTC7QQMwY8otyMNobKExaZ181d<@U'S{@7cNqJZ";
printf("Result: %s\n", check((uchar*)pwd) ? "OK" : "FAIL");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXI7Ci8vdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxvbmc7CgppbnQgY2hlY2sodWNoYXIgKiBwd2QpCnsKICAgIHVjaGFyIGFbXSA9ICIgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+IjsKICAgIGludCBkID0gc3RybGVuKChjaGFyKilhKSwgaSwgajsKICAgIGZvciAoaSA9IDAsIGogPSBzdHJsZW4oKGNoYXIqKXB3ZCk7IGkgPCBqOyBpKyspIHsKICAgICAgICBpZiAoc3RyY2hyKChjaGFyKilhLCAoY2hhcilwd2RbaV0pID09IE5VTEwpIHB3ZFtpXSA9IGFbcHdkW2ldICUgZF07CiAgICAgICAgaWYgKGkgPiAwKSBwd2RbaSAtIDFdID0gYVsoKChwd2RbaSAtIDFdIF4gcHdkW2ldKSA8PCAxKSAqIHB3ZFtpXSkgJSBkXTsKICAgIH0KICAgIHJldHVybiAhc3RyY21wKChjaGFyKilwd2QsICJUcDk/az1IRE4mbkR7OSB+SnpVWUczaD5sRiB7YD4gSzwlIHBtfko+eSBFPTJCPXkrPHgrbmZAKiVrRFo7ei8nV1liV09rJ3Vzdz5aIik7Cn0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiogYXJndikKewoJdWNoYXIgcHdkWzI1Nl09IkFlTXpROG9aazMxVzRCKExcXDFVaCQsOW08L2NaZVFcIkxCeWdnaFlUQzdRUU13WThvdHlNTm9iS0V4YVoxODFkPEBVJ1N7QDdjTnFKWiI7CiAgICBwcmludGYoIlJlc3VsdDogJXNcbiIsIGNoZWNrKCh1Y2hhciopcHdkKSA/ICJPSyIgOiAiRkFJTCIpOwogICAgcmV0dXJuIDA7Cn0=