#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &x) {
  x = 0;
  T fg = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') fg = -1;
    ch = getchar();
  }
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  x = fg * x;
}
template <typename T, typename... Args>
inline void read(T &x, Args &...args) {
  read(x), read(args...);
}
inline long long mul(long long a, long long b) { return a * b % 998244853; }
inline long long add(long long a, long long b) {
  long long res = (a + b) % 998244853;
  if (res < 0) res += 998244853;
  return res;
}
inline long long fpow(long long a, long long p) {
  long long res = 1;
  for (; p; p >>= 1) {
    if (p & 1) res = mul(res, a);
    a = mul(a, a);
  }
  return res;
}
inline long long getInv(long long x) { return fpow(x, 998244853 - 2); }
inline long long fmul(long long a, long long b) {
  long long res = 0;
  for (; b; b >>= 1) {
    if (b & 1) res = add(res, a);
    a = add(a, a);
  }
  return res;
}
long long fac[100005], inv[100005];
inline long long C(long long n, long long m) {
  if (m < 0 || m > n) return 0;
  return mul(fac[n], mul(inv[n - m], inv[m]));
}
inline long long P(long long n, long long m) { return mul(fac[n], fac[n - m]); }
void init() {
  fac[0] = 1;
  for (int i = 1; i < 100005; i++) fac[i] = mul(fac[i - 1], i);
  inv[100005 - 1] = fpow(fac[100005 - 1], 998244853 - 2);
  for (int i = 100005 - 2; i >= 0; i--) inv[i] = mul(inv[i + 1], i + 1);
}
int main() {
  init();
  int n, m;
  cin >> n >> m;
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= m && j <= i && (i - j >= n - m || i + j == n + m);
         j++) {
      long long tmp1 = add(C(i + j - 1, i - 1), -C(i + j - 1, i - 1 - (i - j)));
      long long tmp2 =
          add(C(n + m - i - j, n - i), -C(n + m - i - j, n - i - 1));
      long long tmp = mul(tmp1, tmp2);
      tmp = mul(tmp, i - j);
      ans = add(ans, tmp);
    }
  }
  cout << ans << '\n';
  return 0;
}
