#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
long long modexp(long long x, long long y) {
  if (y == 0) return 1;
  long long z = modexp(x, y / 2);
  z *= z;
  z %= MOD;
  if (y % 2 == 0) return z;
  return (z * (x % MOD)) % MOD;
}
long long getE(long long x) {
  if (x % 2 == 0) return x / 2 + 1;
  return (x + 1) / 2;
}
void sherlock(int t) {
  long long n, m, l, r;
  cin >> n >> m >> l >> r;
  long long E = getE(r) - (l == 0 ? 0 : getE(l - 1));
  long long O = (r - l + 1) - E;
  if ((n * m) % 2 == 1) {
    cout << modexp(O + E, n * m) << endl;
  } else {
    long long f = modexp(O + E, n * m);
    long long s = modexp(abs(E - O), n * m);
    cout << (((f + s) % MOD) * modexp(2, MOD - 2)) % MOD << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int tt = 1;
  for (int t = 1; t <= tt; t++) sherlock(t);
  return 0;
}
