#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <utility>
#include <stdexcept>

struct Person {
  int id, t, h;
  Person(int id, int t, int h): id(id), t(t), h(h) {}
};

struct Machine {
  int T, H, L;
  int S=0;
  Machine(int T, int H, int L): T(T), H(H), L(L) {}
  std::pair<int, int> add(int x) {
    if (x == 10) {
      ++T;
      S += 10;
      if (T > L) throw 1;
    } else if (x == 100) {
      ++H;
      S += 100;
    }
    
    if (S >= 90) {
      S -= 90;
      std::pair<int, int> res;
      while (T > 0 && S > 0) {
        S -= 10;
        --T;
        ++res.first;
      }
      // if (H > 0 && S > 90) {
      //   S -= 100;
      //   --H;
      //   ++res.second;
      // }
      if (S > 0) throw 2;
      return res;
    }

    return {0, 0};
  }
};

int main() {
  int N, T, H, L;
  scanf("%d %d %d %d", &N, &T, &H, &L);

  std::queue<Person> q;
  for (int i=0; i<N; ++i) {
    int t, h;
    scanf("%d %d", &t, &h);
    q.emplace(i+1, t, h);
  }

  Machine m(T, H, L);
  while (true) {
    int id=q.front().id;
    int t=q.front().t, h=q.front().h;
    q.pop();
    //fprintf(stderr, "%d %d %d (%d)\n", id, t, h, m.S);

    try {
      std::pair<int, int> back;
      if (t > 0) {
        --t;
        back = m.add(10);
      } else if (h > 0) {
        --h;
        back = m.add(100);
      } else {
        printf("%d\n", id);
        break;
      }
      t += back.first;
      h += back.second;
      q.emplace(id, t, h);
    } catch (int) {
      printf("%d\n", id);
      break;
    }
  }
}

