#include <bits/stdc++.h>
using namespace std;
void init_ios() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
}
long long v2(long long x) {
  long long res = 0;
  while (x) {
    res += x / 2;
    x /= 2;
  }
  return res;
}
const long long MOD = (long long)1e6 + 3;
long long n, k;
long long fpow(long long a, long long b) {
  if (b == 0) return 1;
  if (b & 1) return (a * fpow(a, b - 1)) % MOD;
  long long res = fpow(a, b / 2);
  return (res * res) % MOD;
}
long long licz(long long po, long long ile) {
  long long res = po, nxt = (po + 1) % MOD;
  if (ile > MOD) return 0;
  for (long long i = 2; i <= ile; ++i) {
    res = (res * nxt) % MOD;
    nxt = (nxt + 1) % MOD;
  }
  return res;
}
signed main() {
  init_ios();
  cin >> n >> k;
  if (n <= 60 && (1LL << n) < k) {
    cout << "1 1\n";
    return 0;
  }
  long long ile = n + v2(k - 1);
  long long odwr = fpow(2, ile);
  odwr = fpow(odwr, MOD - 2);
  long long mian = fpow(fpow(2, n), k);
  mian = (mian * odwr) % MOD;
  long long zacz = ((fpow(2, n) - k + 1) % MOD + MOD) % MOD;
  long long li = licz(zacz, k);
  li = (li * odwr) % MOD;
  li = ((mian - li) % MOD + MOD) % MOD;
  cout << li << " " << mian << "\n";
}
