#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> v;
inline int f(int x){
return ((x^(x<<2))>>1)&((1<<7)-2);
}
void precompute(){
vector<int> temp(1<<8,0);
for(int j=0; j<32; j++){
for(int i=0; i<temp.size(); i++)
temp[i] = j?v.back()[v.back()[i]]:f(i);
v.push_back(temp);
}
}
int iterative(int x, int n){
while(n--)
x = v[0][x];
return x;
}
int nth_transform(int x, int n){
for(int i=0; i<32; i++)
if(n&(1<<i))
x = v[i][x];
return x;
}
int main() {
if(v.empty())
precompute();
int n,x;
cin>>n>>x;
x %= 256; // f is designed to handle only finite (256) values.
if(!x) x = 256;
for(int i=0; i<n; i++)
for(int j=0; j<x; j++)
if(iterative(j,i)!=nth_transform(j,i))
cout<<"mismatch for x = "<<x<<" n = "<<n<<endl;
cout<<"check executed successfully"<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmVjdG9yPHZlY3RvcjxpbnQ+PiB2OwppbmxpbmUgaW50IGYoaW50IHgpewogICAgcmV0dXJuICgoeF4oeDw8MikpPj4xKSYoKDE8PDcpLTIpOwp9CnZvaWQgcHJlY29tcHV0ZSgpewoJdmVjdG9yPGludD4gdGVtcCgxPDw4LDApOwoJZm9yKGludCBqPTA7IGo8MzI7IGorKyl7CgkgICAgZm9yKGludCBpPTA7IGk8dGVtcC5zaXplKCk7IGkrKykKCSAgICAgICAgdGVtcFtpXSA9IGo/di5iYWNrKClbdi5iYWNrKClbaV1dOmYoaSk7CgkgICAgdi5wdXNoX2JhY2sodGVtcCk7Cgl9Cn0KaW50IGl0ZXJhdGl2ZShpbnQgeCwgaW50IG4pewoJd2hpbGUobi0tKQoJCXggPSB2WzBdW3hdOwoJcmV0dXJuIHg7Cn0KaW50IG50aF90cmFuc2Zvcm0oaW50IHgsIGludCBuKXsKCWZvcihpbnQgaT0wOyBpPDMyOyBpKyspCgkJaWYobiYoMTw8aSkpCgkJCXggPSB2W2ldW3hdOwoJcmV0dXJuIHg7Cn0KaW50IG1haW4oKSB7CglpZih2LmVtcHR5KCkpCgkJcHJlY29tcHV0ZSgpOwoJaW50IG4seDsKCWNpbj4+bj4+eDsKCXggJT0gMjU2OwkvLyBmIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSBvbmx5IGZpbml0ZSAoMjU2KSB2YWx1ZXMuCglpZigheCkJeCA9IDI1NjsKCWZvcihpbnQgaT0wOyBpPG47IGkrKykKCQlmb3IoaW50IGo9MDsgajx4OyBqKyspCgkJCWlmKGl0ZXJhdGl2ZShqLGkpIT1udGhfdHJhbnNmb3JtKGosaSkpCgkJCQljb3V0PDwibWlzbWF0Y2ggZm9yIHggPSAiPDx4PDwiIG4gPSAiPDxuPDxlbmRsOwoJY291dDw8ImNoZWNrIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseSI8PGVuZGw7CglyZXR1cm4gMDsKfQ==