#include <cstring>
#include <iostream>
using namespace std;
int main() {
    int n, s; cin >> n >> s;
    int a[n]; for (int i = 0; i < n; i++) cin >> a[i];
    long long dp[n+1][s+1];
    memset(dp, 0, sizeof dp);
    const int M = 998244353;
    dp[0][0] = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= s; j++) {
            dp[i+1][j] = (2 * dp[i][j] + (j >= a[i] ? dp[i][j-a[i]] : 0)) % M;
        }
    }
    cout << dp[n][s] << endl;
}
