#include <bits/stdc++.h>
using namespace std;
long long qp(long long a, long long k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = res * a % 1000003;
    a = a * a % 1000003;
    k >>= 1;
  }
  return res;
}
long long g[70];
int main() {
  long long n, k;
  scanf("%I64d%I64d", &n, &k);
  if (n <= 60 && k > (1ll << n)) {
    printf("1 1\n");
    return 0;
  }
  long long upp = qp(2, n), inv = qp(upp, 1000003 - 2);
  long long fenzi = 1, fenmu = qp(upp, k);
  if (upp < k)
    fenzi = 0;
  else
    for (int i = 1; i <= k; i++) fenzi = fenzi * (upp - i + 1) % 1000003;
  k--;
  g[0] = 1;
  for (int i = 1; i <= 62; i++) g[i] = g[i - 1] * g[i - 1] * 2 % 1000003;
  long long G = 1;
  for (int i = 0; i <= 62; i++) {
    if (k & 1) G = G * g[i] % 1000003;
    k >>= 1;
  }
  fenzi = fenzi * qp(G, 1000003 - 2) % 1000003;
  fenmu = fenmu * qp(G, 1000003 - 2) % 1000003;
  fenzi = fenzi * inv % 1000003;
  fenmu = fenmu * inv % 1000003;
  printf("%I64d %I64d\n", (fenmu - fenzi + 1000003) % 1000003, fenmu);
  return 0;
}
