  make(int, n);
  RE (i, n) {
    cin>>l[i]>>a[i];
  }
  RE (ver, n) {
    RE (hor, n) {
      a[hor] -= 2;
      a[ver] -= 2;
      int h = l[ver];
      int cur_wid = 0;
      int taken = 0;
      if (a[hor] < 0 || a[ver] < 0 || (hor != n && ver != n)) {
        goto A;
      }
      RE (now, n) {
        if (now == ver || a[now] == 0) { continue; }
        if (h == 1) { goto A; }
        int bl = (a[now] + h - 2) / (h - 1);
        cur_wid += bl * l[now];
        a[ver] -= bl;
        taken += bl;
      }
      if (cur_wid == l[hor]) {
        taken--;
        a[ver]++;
      }
      if (a[ver] < 0 || a[ver] > l[hor] - cur_wid - (a[ver] != 0)) {
        goto A;
      }
      cout<<"YES\n";
      debug3(hor, ver, cur_wid);
      return 0;
      A: ;
      a[hor] += 2;
      a[ver] += 2;
      a[ver] += taken;
    }
  }
  cout<<"NO\n";