#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int main() { int N, x; cin >> N >> x; vector P(N); for (int i = 0; i < N; i++) cin >> P[i]; vector< vector > w; for (unsigned S = 0; S < (1U << N); S++) { int sum = 0; for (int i = 0; i < N; i++) if (S & (1 << i)) sum += P[i]; if (sum == x) { vector v; for (int i = 0; i < N; i++) if (S & (1 << i)) v.push_back(i); w.push_back(v); } } sort(w.begin(), w.end()); for (int j = 0; j < w.size(); j++) { vector& v = w[j]; for (int k = 0; k < v.size(); k++) cout << v[k] + 1 << (k + 1 < v.size() ? ' ' : '\n'); } }