#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
#define MAXN 1111
int w[111];
bool vis[111][MAXN];
int dp[MAXN] , ans[111];
int path[111][MAXN];
int main()
{
int n, k;
while(scanf("%d %d",&n, &k)!=EOF)
{
int i, j;
memset(vis, 0, sizeof(vis));
memset(dp, 0, sizeof(dp));
memset(path, 0, sizeof(path));
for( int i = 1; i <= n; i++)
scanf("%d",&w[i]);
for( i = n; i >= 1; i--)
{
for( j = k; j >= w[i]; j--)
{
if(dp[j] < dp[j-w[i]] +1)
{
dp[j] = dp[j-w[i]] + 1;
path[i][dp[j]] = 1;
}
}
}
printf("%d\n",dp[k]);
int cnt = dp[k];
for( i = 1; i <= n && cnt > 0 ; i++)
{
if(path[i][cnt])
{
printf("%d%c",i, --cnt?' ':'\n');
}
}
}
return 0;
}
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
#define MAXN 1111
int w[111];
bool vis[111][MAXN];
int dp[MAXN] , ans[111];
int path[111][MAXN];
int main()
{
int n, k;
while(scanf("%d %d",&n, &k)!=EOF)
{
int i, j;
memset(vis, 0, sizeof(vis));
memset(dp, 0, sizeof(dp));
memset(path, 0, sizeof(path));
for( int i = 1; i <= n; i++)
scanf("%d",&w[i]);
for( i = n; i >= 1; i--)
{
for( j = k; j >= w[i]; j--)
{
if(dp[j] < dp[j-w[i]] +1)
{
dp[j] = dp[j-w[i]] + 1;
path[i][dp[j]] = 1;
}
}
}
printf("%d\n",dp[k]);
int cnt = dp[k];
for( i = 1; i <= n && cnt > 0 ; i++)
{
if(path[i][cnt])
{
printf("%d%c",i, --cnt?' ':'\n');
}
}
}
return 0;
}