func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = 1000003ll;   long long npow[64];   long long fast_pow(long long n, long long e) {     if (e == 0) return 1ll;     long long tmp = fast_pow(n, e / 2ll);     tmp = (tmp * tmp) % MOD;     if (e & 1ll) return (tmp * n) % MOD;     return tmp;   }   int main() {     ios::sync_with_stdio(0);     npow[0] = 1ll;     for (int i = 1; i < 63; i++) npow[i] = (npow[i - 1] * 2ll);     long long n, k;     cin >> n >> k;     if (n < 63 && k > npow[n]) {       cout <<  1 1 n ;       return 0;     }     long long tgt = k - 1ll;     long long pcount = 0;     long long val = 2ll;     while (true) {       long long adder = tgt / val;       if (!adder) break;       val *= 2ll;       pcount += adder;     }     long long kmult = n - (pcount / (k - 1));     long long den = fast_pow(2, k - 1ll);     den = fast_pow(den, kmult - 1ll);     den = den * fast_pow(2ll, k - 1 - (pcount % (k - 1)));     den %= MOD;     long long num = 0;     if (k - 1ll < MOD) {       long long prod = fast_pow(2ll, pcount);       long long rem = fast_pow(2ll, n);       num = fast_pow(prod, MOD - 2ll);       for (int i = 1; i <= k - 1ll; i++) {         long long mult = rem - i;         while (mult < 0) mult += MOD;         num = (num * mult) % MOD;       }     }     num = (den - num);     while (num < 0) num += MOD;     cout << num <<     << den <<   n ;     return 0;   }   