#include <bits/stdc++.h>
using namespace std;
long long n, k;
long long quickpow(long long x, long long y) {
  long long res = 1;
  for (; y; y >>= 1, x *= x, x %= 1000003)
    if (y & 1) res *= x, res %= 1000003;
  return res;
}
int main() {
  scanf("%I64d %I64d", &n, &k);
  if (n < 62 && k > (1LL << n))
    printf(" 1 1\n");
  else {
    long long A = 1, t = quickpow(2, n), cnt = n;
    for (int y = 1; y < 62; y++) cnt += (k - 1) / (1LL << y);
    if (k < 1000003) {
      for (long long i = 1; i <= k; i++)
        A = A * (t - i + 1000003 + 1) % 1000003;
      A = A * quickpow(quickpow(2, 1000003 - 2), cnt) % 1000003;
    } else
      A = 0;
    long long B = quickpow(quickpow(2, n), k) *
                  quickpow(quickpow(2, 1000003 - 2), cnt) % 1000003;
    printf("%I64d %I64d\n", (B - A + 1000003) % 1000003, B);
  }
  return 0;
}
