#include <bits/stdc++.h>
using namespace std;
long long max(long long a, long long b) {
  if (a > b) {
    return a;
  } else {
    return b;
  }
}
long long min(long long a, long long b) {
  if (a < b) {
    return a;
  } else {
    return b;
  }
}
int n;
int res;
int m[6001][4];
int so[4];
int mi[7], ma[7];
int de[7] = {0, 2, 4, 8, 16, 32, 1000};
int s[7] = {0, 500, 1000, 1500, 2000, 2500, 3000};
long long score[5006], hack[4], s2[6001][5];
int v[6];
long long dp[2][91][91][91];
void test(int l1, int l2, int l3) {
  if (res == 1) return;
  v[1] = l1;
  v[2] = l2;
  v[3] = l3;
  for (int i = (1); i <= (n); i++) score[i] = 0;
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (3); j++)
      if (m[i][j]) {
        int val = abs(m[i][j]);
        s2[i][j] = ((long long)s[v[j]] * (250 - val)) / 250;
        score[i] += s2[i][j];
      } else
        s2[i][j] = 0;
  long long co[6];
  for (int i = (1); i <= (3); i++) co[i] = min(hack[i], so[i] - mi[v[i]]);
  long long ret = co[1] + co[2] + co[3];
  ret *= 100;
  score[1] += ret;
  long long sum = 0, cnt = 0;
  for (int i = (2); i <= (n); i++)
    if (score[i] > score[1]) cnt++;
  if (cnt == 0) {
    res = 1;
    return;
  }
  res = min(res, cnt + 1);
  int c1 = 1, c2 = 0;
  for (int a1 = (0); a1 <= (co[1]); a1++)
    for (int a2 = (0); a2 <= (co[2]); a2++)
      for (int a3 = (0); a3 <= (co[3]); a3++) dp[c1][a1][a2][a3] = cnt;
  for (int i = (2); i <= (n); i++)
    if (score[i] > score[1]) {
      for (int a1 = (0); a1 <= (co[1]); a1++)
        for (int a2 = (0); a2 <= (co[2]); a2++)
          for (int a3 = (0); a3 <= (co[3]); a3++) {
            dp[c2][a1][a2][a3] = dp[c1][a1][a2][a3];
          }
      for (int i1 = (0); i1 <= (1); i1++)
        for (int j1 = (0); j1 <= (1); j1++)
          for (int k1 = (0); k1 <= (1); k1++) {
            if (score[1] >= score[i] - (m[i][1] >= 0 ? 0 : s2[i][1] * i1) -
                                (m[i][2] >= 0 ? 0 : s2[i][2]) * j1 -
                                (m[i][3] >= 0 ? 0 : s2[i][3] * k1)) {
              for (int a1 = (0); a1 <= (co[1] - i1); a1++)
                for (int a2 = (0); a2 <= (co[2] - j1); a2++)
                  for (int a3 = (0); a3 <= (co[3] - k1); a3++) {
                    dp[c1][a1][a2][a3] =
                        min(dp[c1][a1][a2][a3],
                            dp[c2][a1 + i1][a2 + j1][a3 + k1] - 1);
                    if (dp[c1][a1][a2][a3] == 0 && n == 40)
                      printf("%d %d %d\n", l1, l2, l3);
                    res = min(res, dp[c1][a1][a2][a3] + 1);
                  }
            }
          }
    }
}
int main() {
  scanf("%d", &n);
  res = n;
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (3); j++) scanf("%d", &m[i][j]);
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (3); j++) {
      if (m[i][j] != 0) so[j]++;
      if (m[i][j] < 0) hack[j]++;
    }
  if (hack[1] + hack[2] + hack[3] >= 90) {
    puts("1");
    return 0;
  }
  for (int i = (1); i <= (6); i++) mi[i] = n + 1;
  for (int i = (1); i <= (6); i++) ma[i] = -1;
  for (int i = (0); i <= (n); i++) {
    int label = 6;
    for (int j = (1); j <= (5); j++) {
      if (n < de[j] * i && de[j] * i <= 2 * n) {
        label = j;
      }
    }
    mi[label] = min(mi[label], i);
    ma[label] = max(ma[label], i);
  }
  for (int a1 = (1); a1 <= (6); a1++)
    for (int a2 = (1); a2 <= (6); a2++)
      for (int a3 = (1); a3 <= (6); a3++)
        if (so[1] >= mi[a1] && so[1] - hack[1] <= ma[a1] &&
            so[2] - hack[2] <= ma[a2] && so[2] >= mi[a2] && so[3] >= mi[a3] &&
            so[3] - hack[3] <= ma[a3]) {
          test(a1, a2, a3);
        }
  cout << res << endl;
  return 0;
}
