#include <bits/stdc++.h>
using namespace std;
int f[2222][2222];
bool put[2222][2222];
int md[2222][2222];
int n;
class T {
 public:
  int first, second, n;
};
inline bool operator<(const T& a, const T& b) {
  if (a.first != b.first) return a.first < b.first;
  return a.second > b.second;
}
T a[2222];
int dfs(int i, int j) {
  if (f[i][j] != -1) return f[i][j];
  put[i][j] = 0;
  if (a[j].second <= a[i].first) return f[i][j] = 0;
  if (a[i].second > a[j].second) return f[i][j] = dfs(i + 1, j);
  int low = i, high = n - 1;
  while (high - low > 1) {
    int mid = (high + low) / 2;
    if (a[mid].first >= a[i].second)
      high = mid;
    else
      low = mid;
  }
  if (a[low].first < a[i].second) ++low;
  md[i][j] = low;
  if (a[low].first < a[i].second) {
    if (a[i].second <= a[j].second) {
      if (1 + dfs(i + 1, i) > dfs(i + 1, j)) put[i][j] = 1;
      return f[i][j] = max(1 + dfs(i + 1, i), dfs(i + 1, j));
    } else
      return f[i][j] = dfs(i + 1, j);
  }
  if (1 + dfs(i + 1, i) + dfs(low, j) > dfs(i + 1, j)) put[i][j] = 1;
  return f[i][j] = max(1 + dfs(i + 1, i) + dfs(low, j), dfs(i + 1, j));
}
bool fst = 1;
inline bool cmp(const pair<int, int>& a, const pair<int, int>& b) {
  if (a.first != b.first)
    return a.first < b.first;
  else
    return a.second > b.second;
}
vector<int> ans;
void print(int i, int j) {
  if (f[i][j] == 0) return;
  if (put[i][j]) {
    if (fst)
      fst = 0;
    else
      cout << " ";
    cout << a[i].n;
  }
  if (a[i].second > a[j].second) {
    print(i + 1, j);
    return;
  }
  if (a[md[i][j]].first < a[i].second) {
    if (1 + f[i + 1][i] > f[i + 1][j])
      print(i + 1, i);
    else
      print(i + 1, j);
    return;
  }
  if (1 + f[i + 1][i] + f[md[i][j]][j] > f[i + 1][j]) {
    print(i + 1, i);
    print(md[i][j], j);
  } else
    print(i + 1, j);
}
int main() {
  cin >> n;
  int mpos = 0;
  for (int(i) = 0; (i) < (n); ++(i)) {
    int p, q;
    cin >> p >> q;
    a[i].first = p - q;
    a[i].second = p + q;
    a[i].n = i + 1;
  }
  sort(a, a + n);
  for (int(i) = 0; (i) < (n); ++(i)) {
    if (a[i].second > a[mpos].second) mpos = i;
    for (int(j) = 0; (j) < (n); ++(j)) f[i][j] = -1;
  }
  cout << dfs(0, mpos) << endl;
  ans.clear();
  print(0, mpos);
  cout << endl;
}
