#include #include #include #define ll long long using namespace std; struct Stick{ ll h; // height ll p; // penalty int in; // index }stick[1000005]; bool cmp(Stick a, Stick b){ return a.h <= b.h; } ll n, b, br1 = 1, br4 = 1, br5 = 1; vector A[1000005]; int main(){ freopen("sticks.in", "r", stdin); freopen("sticks.out", "w", stdout); cin >> n >> b; ll br3 = n; for(int i = 1; i <= n; i++){ cin >> stick[i].h; stick[i].in = i; } for(int i = 1; i <= n; i++) cin >> stick[i].p; sort(stick + 1, stick + n + 1, cmp); while(br1 <= n){ ll br = 0; for(int i = br4; i <= n; i++){ if(b > br && br1 <= n){ if(br + stick[i].h <= b){ A[br5].push_back(stick[i].in); br += stick[i].h; br1++; br4++; } else{ A[br5].push_back(stick[br3].in); br += stick[br3].h; br1++; br3--; } } else{ break; } } br5++; } cout << br5 - 1 << endl; for(int i = 1; i < br5; i++){ cout << A[i].size() << " "; for(int j = 0; j < A[i].size(); j++){ cout << A[i][j] << " "; } cout << endl; } return 0; }