#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>
#include <vector>

using namespace std;
typedef long long ll;
const ll MOD = 998244353;

int main() {
  int n, s;
  cin >> n >> s;
  vector<int> a(n);
  for (int i = 0; i < n; ++i)
    cin >> a[i];
  vector<ll> dp(s + 1);
  dp[0] = 1;
  for (int i = 0; i < n; ++i) {
    vector<ll> ndp(s + 1);
    for (int j = 0; j <= s; ++j)
      ndp[j] = dp[j] * 2 % MOD;
    for (int j = 0; j <= s - a[i]; ++j) {
      ndp[j + a[i]] += dp[j];
      ndp[j + a[i]] %= MOD;
    }
    swap(dp, ndp);
  }
  cout << dp[s];
}