#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cassert>

using namespace std;

#define FOR(i,k,n) for(int i=(k); i<(int)n; ++i)
#define REP(i,n) FOR(i,0,n)

vector<int> M;
int N;
int memo[20][(1<<13) + 1];
bool dfs(int idx, int s){
  int& res = memo[idx][s];
  if(res != -1) return res;
  if(idx % 2 == 0){
    if(s == 1) return false;
    if(s - M[idx] <= 1) return true;
    for(int x = 1; x <= M[idx]; x++){
      if(dfs((idx + 1) % (2*N), s - x)) return res = true;
    }
    return res = false;
  }else{
    if(s == 1) return true;
    if(s - M[idx] <= 1) return false;
    for(int x = 1; x <= M[idx]; x++){
      if(!dfs((idx + 1) % (2*N), s - x)) return res = false;
    }
    return res = true;
  }
}

int main(){
  while(cin>>N && N){
    int S; cin>>S;
    M = vector<int>(2 * N);
    REP(i, 2 * N) cin>>M[i];
    memset(memo, -1, sizeof(memo));
    if(dfs(0, S)) cout<<1<<endl;
    else cout<<0<<endl;
  }
  return 0;
}