#include <bits/stdc++.h>
int i, j, k, l;
using namespace std;
int count(int x) {
  int z = 0;
  while (x) {
    ++z;
    x /= 10;
  }
  return z;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0);
  int n;
  cin >> n;
  vector<map<int, int>> v(3);
  for (i = 0; i < n; ++i)
    for (j = 0; j < 6; ++j) cin >> k, v[i][k]++;
  j = pow(10, n);
  int x, y, z;
  for (i = 1; i < j; ++i) {
    if (count(i) == 1) {
      if (!v[0][i] && !v[1][i] && !v[2][i]) return cout << i - 1 << endl, 0;
    } else if (count(i) == 2) {
      x = (v[0][i % 10] + v[1][i % 10] + v[2][i % 10]);
      y = (v[0][i / 10] + v[1][i / 10] + v[2][i / 10]);
      if (!x || !y)
        return cout << i - 1 << endl, 0;
      else if ((v[0][i % 10] && v[0][i / 10]) ||
               (v[1][i % 10] && v[1][i / 10]) ||
               (v[2][i % 10] && v[2][i / 10])) {
        x = (v[0][i % 10] + v[0][i / 10]);
        y = (v[1][i % 10] + v[1][i / 10]);
        z = (v[2][i % 10] + v[2][i / 10]);
        if ((x >= 2 && z + y == 0) || (y >= 2 && x + z == 0) ||
            (z >= 2 && x + y == 0))
          return cout << i - 1 << endl, 0;
      }
    } else {
      x = (v[0][i % 10] + v[1][i % 10] + v[2][i % 10]);
      y = (v[0][(i % 100) / 10] + v[1][(i % 100) / 10] + v[2][(i % 100) / 10]);
      z = (v[0][i / 100] + v[1][i / 100] + v[2][i / 100]);
      if (!x || !y || !z)
        return cout << i - 1 << endl, 0;
      else if ((v[0][i % 10] && v[0][i / 100] && v[0][(i % 100) / 10]) ||
               (v[1][i % 10] && v[1][i / 100] && v[1][(i % 100) / 10]) ||
               (v[2][i % 10] && v[2][i / 100] && v[2][(i % 100) / 10]))
        x = (v[0][i % 10] + v[0][i / 100] + v[0][(i % 100) / 10]);
      y = (v[1][i % 10] + v[1][i / 100] + v[1][(i % 100) / 10]);
      z = (v[2][i % 10] + v[2][i / 100] + v[2][(i % 100) / 10]);
      if ((x >= 3 && z + y == 0) || (y >= 3 && x + z == 0) ||
          (z >= 3 && x + y == 0))
        return cout << i - 1 << endl, 0;
    }
  }
  cout << i << endl;
}
