#include #include #include using namespace std; enum STATE{ CONSUME, CHARGE }; struct GUARD { int index; int counter; vector v; GUARD() : index(0), counter(0){} int GetState()const{ if (index % 2 == 0){ return CONSUME; } return CHARGE; } int GetTime()const{ return v[index % v.size()]; } }; main() { int guard, duration; while (cin >> guard >> duration && guard){ GUARD guards[100]; for (int i = 0; i < guard; ++i){ GUARD& g = guards[i]; int in; while (cin >> in && in){ g.v.push_back(in); } g.counter = g.GetTime(); } int answer = 0; deque q; for (int t = 0; t < duration; ++t){ bool pop = false; for (int i = 0; i < guard; ++i){ GUARD& g = guards[i]; int state = g.GetState(); switch(state){ case CONSUME: if (--g.counter == 0){ ++g.index; g.counter = g.GetTime(); q.push_back(i); } break; case CHARGE: if (i != q.front()){ ++answer; break; } if (--g.counter == 0){ ++g.index; g.counter = g.GetTime(); pop = true; } break; default: break; } } if (pop){ q.pop_front(); } } cout << answer << endl; } }