#include <bits/stdc++.h>
using namespace std;
const int MX = 4005;
const long long MOD = 998244353;
long long qpow(long long x, long long t) {
  long long ans = 1;
  while (t) {
    if (t & 1) ans = ans * x % MOD;
    x = x * x % MOD;
    t >>= 1;
  }
  return ans;
}
long long inv(long long x) { return qpow(x, MOD - 2); }
template <typename T>
void add(T &x, const T &y) {
  x += y;
  if (x >= MOD) x %= MOD;
}
template <typename T>
void read(T &x) {
  x = 0;
  char c = getchar();
  bool f = 0;
  while (!isdigit(c) && c != '-') c = getchar();
  if (c == '-') f = 1, c = getchar();
  while (isdigit(c)) x = x * 10 + c - '0', c = getchar();
  if (f) x = -x;
}
long long C[MX][MX];
long long n, k, l, ivl;
void init() {
  for (int i = 0; i < MX; i++) {
    C[i][0] = 1;
    for (int j = 1; j <= i; j++)
      C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % MOD;
  }
  ivl = inv(l);
}
long long calc(long long *f, long long x) {
  long long y = 0;
  for (int i = MX - 1; i >= 0; i--) y = (y * x + f[i]) % MOD;
  return y;
}
void interpolation(long long *src, int len, long long *fun) {
  long long f0[MX], f[MX], tmp[MX];
  memset(f0, 0, sizeof(f0));
  memset(fun, 0, sizeof(fun));
  f0[0] = 1;
  for (int i = 0; i <= len; i++) {
    for (int j = len + 1; j >= 1; j--)
      f0[j] = (f0[j - 1] - f0[j] * i + MOD * MOD) % MOD;
    f0[0] = f0[0] * i % MOD;
  }
  for (int i = 0; i <= len; i++) {
    memmove(tmp, f0, sizeof(tmp));
    for (int j = len + 1; j >= 1; j--) {
      f[j - 1] = tmp[j];
      add(tmp[j - 1], f[j - 1] * i);
    }
    long long mul = 1;
    for (int j = 0; j <= len; j++)
      if (i != j) mul = mul * (i - j + MOD) % MOD;
    mul = inv(mul);
    for (int j = 0; j <= len; j++) add(fun[j], f[j] * mul % MOD * src[i]);
  }
}
void integral(long long *f) {
  f[0] = 0;
  for (int i = MX - 1; i >= 1; i--) f[i] = f[i - 1] * inv(i) % MOD;
}
void work() {
  static long long val[MX], f[MX];
  memset(val, 0, sizeof(val));
  for (int x = 0; x <= n * 2; x++) {
    long long m1 = 2ll * x * (l - x + MOD) % MOD * ivl % MOD * ivl % MOD;
    long long m2 = inv((1 - m1 + MOD) % MOD);
    long long f1 = qpow(m1, k), f2 = qpow((1 - m1 + MOD) % MOD, n - k);
    for (int i = k; i <= n; i++) {
      add(val[x], C[n][i] * f1 % MOD * f2);
      f1 = f1 * m1 % MOD;
      f2 = f2 * m2 % MOD;
    }
  }
  interpolation(val, n * 2, f);
  integral(f);
  printf("%lld\n", calc(f, l));
}
int main() {
  read(n), read(k), read(l);
  init();
  work();
  return 0;
}
