#include // #include using namespace std; unsigned long long pow3(int n) { unsigned long long r = 1; for(int i = 0; i < n; ++i) { r *= 3; } return r; } int wi(unsigned long long l, unsigned long long r, unsigned long long n) { if(n < l || n >= r) { return -1; } if(r - l == 1) { return 1; } unsigned long long b = (r - l) / 3; if(n < l + b) { return 0; } else if(n < l + b + b) { return 1; } return 2; } int main() { ifstream inp; inp.open("farm.in"); int n, p; inp >> p >> n; unsigned long long a[n]; for(int i = 0; i < n; ++i) { inp >> a[i]; } inp.close(); ofstream out; out.open("farm.out"); unsigned long long num, cl, cr, diff; int step, w; for(int i = 0; i < n; ++i) { num = a[i] - 1; cl = 0; cr = pow3(p); // cout << cl << " " << cr << endl; step = 1; for(;;) { w = wi(cl, cr, num); // cout << cl << " " << cr << ": "; // cout << w << "; "; if(w == 1) { break; } diff = cr - cl; if(w == 0) { cr = cl + diff / 3; // cout << "YES!"; } else { cl = cr - diff / 3; // cout << "NO!"; } ++step; } out << step << endl; // cout << endl; } out.close(); return 0; }