#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
struct intmod {
  long long val;
  intmod(long long _val = 1) {
    val = _val % MOD;
    if (val < 0) val += MOD;
  }
  bool operator!=(intmod rhs) const { return val != rhs.val; }
  bool operator==(intmod rhs) const { return val == rhs.val; }
  intmod operator+=(intmod rhs) {
    val += rhs.val;
    if (val >= MOD) val -= MOD;
    return *this;
  }
  intmod operator-=(intmod rhs) {
    val -= rhs.val;
    if (val < 0) val += MOD;
    return *this;
  }
  intmod operator*=(intmod rhs) {
    val = val * rhs.val % MOD;
    return *this;
  }
  friend intmod operator+(intmod lhs, intmod rhs) { return lhs += rhs; }
  friend intmod operator-(intmod lhs, intmod rhs) { return lhs -= rhs; }
  friend intmod operator*(intmod lhs, intmod rhs) { return lhs *= rhs; }
  friend intmod sqr(intmod a) { return a * a; }
  friend intmod bpow(intmod a, int p) {
    intmod ans(1);
    while (p) {
      if (p & 1) ans *= a;
      a = sqr(a);
      p >>= 1;
    }
    return ans;
  }
  friend intmod inv(intmod a) { return bpow(a, MOD - 2); }
  intmod operator/=(intmod rhs) { return (*this) *= inv(rhs); }
  friend intmod operator/(intmod lhs, intmod rhs) { return lhs /= rhs; }
  friend istream &operator>>(istream &is, intmod &im) { return is >> im.val; }
  friend ostream &operator<<(ostream &os, intmod im) { return os << im.val; }
};
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, m;
  cin >> n >> m;
  cout << bpow(intmod(2), n + m) << endl;
  return 0;
}
