#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:416777216")
using namespace std;
int N;
struct team {
  int a, d;
  int id;
} T[100];
int place(int id) {
  team t = T[id];
  int cnt = 0;
  for (int i = 0; i < id; i++) {
    if (t.a > T[i].a) cnt++;
  }
  for (int i = id + 1; i < N; i++) {
    if (t.a >= T[i].a) cnt++;
  }
  return N - cnt;
}
int main() {
  ios_base::sync_with_stdio(false);
  bool A[100][100];
  for (int i = 0; i < 100; i++)
    for (int j = 0; j < 100; j++) A[i][j] = 0;
  cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> T[i].a >> T[i].d;
    T[i].id = i;
  }
  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++) {
      if (i == j) continue;
      if ((T[i].a < T[j].a || (T[i].a == T[j].a && T[i].id > T[j].id)) &&
          (T[i].a + T[i].d > T[j].a ||
           (T[i].a + T[i].d == T[j].a && T[i].id < T[j].id)) &&
          (T[i].a + T[i].d < T[j].a + T[j].d ||
           (T[i].a + T[i].d == T[j].a + T[j].d && T[i].id > T[j].id))) {
        A[i][j] = 1;
      }
      if ((T[i].a > T[j].a || (T[i].a == T[j].a && T[i].id < T[j].id)) &&
          (T[i].a + T[i].d < T[j].a ||
           (T[i].a + T[i].d == T[j].a && T[i].id > T[j].id)) &&
          (T[i].a + T[i].d > T[j].a + T[j].d ||
           (T[i].a + T[i].d == T[j].a + T[j].d && T[i].id < T[j].id))) {
        A[i][j] = 1;
      }
    }
  int shown = 0;
  bool used[100];
  for (int i = 0; i < N; i++) used[i] = false;
  int ans = 0;
  while (shown != N) {
    int s = -1;
    for (int i = 0; i < N; i++) {
      if (used[i]) continue;
      bool ok = true;
      for (int j = 0; j < N; j++) {
        if (A[j][i] && !used[j]) {
          ok = false;
          break;
        }
      }
      if (ok) {
        s = i;
        used[i] = true;
        break;
      }
    }
    int p1 = place(s);
    T[s].a += T[s].d;
    int p2 = place(s);
    ans += abs(p1 - p2);
    shown++;
  }
  cout << ans;
  return 0;
}
