#include<iostream>
#include<fstream>
#define MAX(a,b)((a)>(b) ? (a) : (b))

using namespace std;

int main()
{
	ifstream cn("date.in");
	ofstream co("date.out");
	int g, n, a[100][100], gr[100], i, j, pr[100], b[100][100], ok, cop;
	
	cn>>n;
	cn>>g;
	
	for(i=1;i<=n;i++)
		cn>>gr[i];
	for(i=1;i<=n;i++)
		cn>>pr[i];
	
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=g;j++)
		{
			if(gr[i]>j)
			{
				a[i][j]=a[i-1][j];
				b[i][j]=b[i-1][j];
			}
			else
			{
				a[i][j]=max(a[i-1][j], pr[i]+a[i-1][j-gr[i]]);
				if(a[i-1][j]>pr[i]+a[i-1][j-gr[i]])
					b[i][j]=b[i-1][j];
				else
					b[i][j]=i;
				
			}
		}
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=g;j++)
			co<<b[i][j]<<" ";
		co<<endl;
	}
	co<<endl;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=g;j++)
			co<<a[i][j]<<" ";
		co<<endl;
	}
	i=n;j=g;
	co<<endl;
	while(j!=0 && i!=0)
	{
		ok=1;
		co<<b[i][j]<<" ";
		cop=b[i][j];
		j=j-gr[b[i][j]];
		
		while(b[i-1][j]==cop)
		{
			i--;
			ok=0;
		}
		if(ok==0)
			i--;
		if(ok==1)
			i--;
	}
	
}
