#include #include #include using namespace std; #define mp make_pair #define x first #define y second typedef pair pii; typedef long long ll; int dp[2][404][404],arr[404],mod=167772161; int sol[404][404]; int add(int x,int y){ if(x+y>mod-1) return x+y-mod; if(x+y<0) return x+y+mod; return x+y; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int n,k; cin>>n>>k; for(int i=1;i<=n;i++){ cin>>arr[i]; } dp[0][0][0]=1; for(int i=1;i<=n;i++){ dp[1][0][0]=1; for(int j=0;j<=k;j++){ for(int l=1;l<=i;l++){ dp[1][j][l]=dp[0][j][l]; if(arr[i]<=j){ dp[1][j][l]=add(dp[1][j][l],dp[0][j-arr[i]][l-1]); } } } for(int j=0;j<=k;j++){ for(int l=0;l<=i;l++){ dp[0][j][l]=dp[1][j][l]; dp[1][j][l]=0; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n-1;j++){ for(int l=k;l>k-arr[i];l--){ int t=1; int br=j; for(int z=l;z>=0;z-=arr[i]){ sol[i][j]=add(sol[i][j],t*dp[0][z][br]); t*=-1; br--; if(br<0) break; } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n-1;j++){ cout<