#include #include #include #include #define ll long long ll COMBINATIONS; using namespace std; void combinate(int from, int len, int curr_len, vector arr, int except, int sum, int hideout_size){ if(curr_len >= len){ if(sum <= hideout_size && (sum + arr[except]) > hideout_size){ COMBINATIONS += 1; } return; } if(sum > hideout_size) return; for(int i = from; i < arr.size(); i++){ if(i == except) continue; combinate(i + 1, len, curr_len + 1, arr, except, sum + arr[i], hideout_size); } } int main() { int count, max_weight; scanf("%d %d", &count, &max_weight); vector weights; int a; for(int i = 0; i < count; i++){ scanf("%d", &a); weights.push_back(a); } ll mod = 167772161; for(int i = 0; i < count; i++){ for(int j = 1; j < count; j++){ COMBINATIONS = 0; combinate(0, j, 0, weights, i, 0, max_weight); printf("%lld ", (COMBINATIONS % mod)); } printf("\n"); } }