func_code_string: #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;   }   