#include <bits/stdc++.h>
using namespace std;
int N=251,p=3,q=197,d=83;
int H[2000][2000],m[2000],r[2000],e[2000],f[40][2000][2000];
int id[4]={0,1},path[44];
vector<int>v[2];
void FX(int id1,int id2)
{
//id1=id2;
int n=15,cnt=0;
memset(f,0,sizeof(f));
f[n+1][0][0]=1;
v[0].clear(),v[1].clear();
v[0].push_back(0);v[1].push_back(0);
for(int i=1;i<=15;i++)v[0].push_back(H[id1][i]),v[1].push_back(H[id2][i]);
for (int i = n; i >= 1; -- i)
{
for (int j = 0; j <= e[id1]; ++ j)
{
for (int k =0 ; k <= e[id2]; ++ k){
f[i][j][k]|=f[i+1][j][k];
if(j>=v[0][i]&&k>=v[1][i])f[i][j][k]|=f[i+1][j-v[0][i]][k-v[1][i]];
}
}
}
//cout<<id1<<"++"<<id2<<"++"<<f[1][e[id1]][e[id2]]<<endl;
for (int i = 1, j = e[id1],k=e[id2]; i <= n; ++ i)
{
if (j >= v[0][i] &&k >= v[1][i] &&f[i][j][k]&&f[i + 1][j - v[0][i]] [k - v[1][i]])
{
path[cnt++] = i;
j -= v[0][i];
k -= v[1][i];
}
}
for (int i = 0; i < cnt; ++ i) cout << path[i] << " ";
cout<<endl;
}
int main()
{
freopen("out.txt","w",stdout);
for(int i=1;i<=5;i++)
for(int j=1;j<=15;j++)H[i][j]=rand()%q;
for(int i=1;i<=5;i++){
for(int j=1;j<=15;j++)cout<<H[i][j]<<" ";
cout<<endl;
}
for(int j=1;j<=15;j++){
m[j]=id[(rand()+rand())%2];
cout<<m[j]<<" ";
}
cout<<endl;
for(int j=1;j<=15;j++){
if(m[j])cout<<j<<" ";
}
cout<<endl;
for(int i=1;i<=5;i++){
for(int j=1;j<=15;j++)
e[i]=e[i]+H[i][j]*m[j];
cout<<e[i]<<" ";
}
cout<<endl;
// freopen("out.txt","r",stdin);
for(int i=1;i<=20;i++){
FX((rand()%5)+1,(rand()%5)+1);
}
return 0;
}