#include #include using namespace std; long long dp[1024][1024][2]; long long dps[1024][2]; int main() { int n, k, x, y; cin >> n >> k >> x >> y; vector a(1024, false); for (int i = 0; i < k; i++) { int b; cin >> b; a[b] = true; } constexpr int M = 998244353; int cur = 0, prev = 1; for (int i = 0; i < 1024; i++) if (a[i]) dp[i][i][prev] = dps[i][prev] = 1; for (int l = 1; l < n; l++) { for (int i = 0; i < 1024; i++) { long long sum = 0; for (int j = 0; j < 1024; j++) { if (a[j]) dp[i][j][cur] = (dps[i^j][prev] - dp[i^j][j][prev]) % M; sum += dp[i][j][cur]; } dps[i][cur] = sum % M; } swap(cur, prev); } long long ans = 0; for (int i = x; i <= y; i++) ans += dps[i][prev]; cout << (ans % M + M) % M << endl; }