//-7 #include #include using namespace std; int n; int M[20]; bool cache[20][1 << 13]; bool touch[20][1 << 13]; bool canWin(int player, int remain){ if(remain == 1){ return false; } if(remain < 1){ std::cerr << "!!!!!!!!!1remain = " << remain << std::endl; exit(1 / 0); } if(touch[player][remain]){ return cache[player][remain]; } touch[player][remain] = true; for(int i = 1; i <= M[player]; i++){ if(!canWin((player + 1) % (2 * n), remain - i)){ cache[player][remain] = true; return canWin(player, remain); } } cache[player][remain] = false; return canWin(player, remain); } int main(){ while(true){ int remain; std::cin >> n; if(n == 0){break;} std::cin >> remain; for(int i = 0; i < 2 * n; i++){ std::cin >> M[i]; } bool b = false; memset(touch, 0, sizeof(touch)); memset(cache, 0, sizeof(cache)); b = (canWin(0, remain)); std::cout << (b ? 1: 0) << std::endl; //std::cout << (canWin(0, remain) ? 1: 0) << std::endl; } }