2
2 6 8 1 3 1
2 1 3 8 6 7
 2
1 8 9 1 1 0
2 3 4 5 6 7
 2
0 2 9 8 1 7
6 7 4 3 2 5
 3
9 4 6 2 7 0
3 7 1 9 6 4
6 1 0 8 7 2
 3
2 7 4 0 7 1
5 5 4 9 1 4
2 1 7 5 1 7
 3
5 1 2 9 6 4
9 0 6 4 2 8
4 6 2 8 3 7
 3
1 1 1 0 2 3
4 5 6 7 8 9
0 0 0 0 0 0
 1
1 9 8 3 7 8
 3
2 6 3 7 1 0
9 1 2 4 7 6
1 4 8 7 6 2
 1
4 6 9 8 2 7
 2
1 7 6 9 2 5
1 6 7 0 9 2
 3
4 1 0 8 0 2
1 5 3 5 0 7
7 7 2 7 2 2
 1
7 6 5 8 9 0
 3
3 8 3 5 5 5
3 0 1 6 6 3
0 4 3 7 2 4
 1
8 1 9 2 9 7
 2
2 0 5 7 0 8
4 5 1 5 4 9
 3
1 1 1 1 1 1
0 2 3 4 5 6
7 8 9 2 3 4
 3
0 1 1 2 2 3
4 5 6 7 8 9
3 4 5 6 7 1
 1
0 8 7 1 3 2
 2
9 3 3 6 7 2
6 2 9 1 5 9
 1
8 2 7 4 1 0
 2
3 6 8 9 5 0
6 7 0 8 2 3
 1
0 1 2 3 4 5
 3
3 4 5 6 8 9
1 1 1 1 1 1
1 2 4 5 7 0
 2
2 3 5 1 9 6
1 6 8 7 3 9
 2
0 9 5 7 6 2
8 6 2 7 1 4
 2
4 3 8 6 0 1
4 7 1 8 9 0
 1
6 2 8 4 5 1
 1
4 0 9 6 3 1
 2
6 0 1 7 2 9
1 3 4 6 7 0
 3
5 0 7 6 2 1
2 7 4 6 1 9
0 2 6 1 7 5
 3
0 1 1 2 2 3
4 5 6 7 8 9
3 4 5 6 7 8
 3
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
 2
2 4 0 3 7 6
3 2 8 7 1 5
 1
7 3 6 9 8 1
 3
1 1 2 3 4 5
6 7 8 9 0 2
3 4 5 6 7 8
 3
9 4 3 0 2 6
7 0 5 3 3 9
1 0 7 4 6 7
 1
3 7 7 6 4 2
 3
2 5 7 4 2 7
1 5 5 9 0 3
8 2 0 1 5 1
 2
1 7 8 6 0 9
3 2 1 7 4 9
 2
0 8 6 2 1 3
5 2 7 1 0 9
 2
5 3 2 9 8 2
0 7 4 8 1 8
 3
3 8 5 1 5 5
1 5 7 2 6 9
4 3 4 8 8 9
 2
5 1 2 3 0 8
3 6 7 4 9 2
 2
0 1 2 3 4 5
6 7 8 9 1 2
 1
5 3 8 0 2 6
 1
0 7 6 3 2 4
 2
8 0 6 5 1 4
7 1 0 8 3 4
 2
7 8 6 1 4 5
8 6 4 3 2 5
 2
0 1 2 3 4 5
6 6 6 7 8 9
 3
9 3 1 8 4 6
6 9 1 2 0 7
8 9 1 5 0 3
 3
0 6 2 9 5 4
3 8 0 1 6 9
6 9 0 1 5 2
 3
0 1 2 2 4 5
6 7 8 9 0 1
3 3 4 5 6 7
 1
1 4 5 7 0 5
 2
8 6 4 1 2 0
7 8 5 3 2 1
 3
5 6 2 9 3 5
5 4 1 5 9 8
4 4 2 0 3 5
 1
9 8 1 6 5 7
 3
7 2 1 3 6 9
0 3 8 4 7 6
1 4 5 8 7 0
 3
9 4 3 3 9 3
1 0 3 4 5 3
2 9 6 2 4 1
 3
1 2 3 7 8 9
9 8 7 1 2 3
7 9 2 3 1 8
 3
8 1 8 2 7 1
9 1 9 9 4 7
0 0 9 0 4 0
 1
2 5 9 6 7 9
 3
4 6 0 3 9 2
8 6 9 0 7 2
6 9 3 2 5 7
 3
8 6 0 5 4 9
1 8 5 3 9 7
7 4 5 1 6 8
 1
8 6 0 9 4 2
 1
7 9 2 5 0 4
 1
6 0 7 5 4 8
 2
5 8 4 7 1 2
0 8 6 2 4 9
 1
5 2 2 5 6 7
 2
6 5 2 7 1 3
3 7 8 1 0 9
 1
8 3 5 4 2 9
 3
0 1 2 3 4 5
6 7 8 9 1 2
3 4 5 6 7 8
 2
6 6 4 7 9 0
2 1 2 8 6 4
 3
2 3 4 5 6 7
3 4 5 6 7 8
9 1 2 3 4 5
 2
0 1 2 3 4 5
4 5 6 7 8 9
 3
2 7 3 6 4 5
0 2 1 9 4 8
8 6 9 5 4 0
 2
0 1 2 3 4 5
6 7 8 9 6 6
 2
1 7 2 0 4 3
5 2 3 6 1 0
 1
6 2 8 5 1 3
 3
5 4 8 1 6 7
0 9 3 5 8 6
2 4 7 8 1 3
 1
6 3 1 9 4 9
 3
0 1 9 1 0 8
9 9 3 5 6 2
9 3 9 9 7 3
 3
8 1 6 8 6 8
7 0 2 5 8 4
5 2 0 3 1 9
 3
2 0 1 3 4 5
6 7 8 9 1 1
3 4 5 6 6 7
 3
4 4 5 0 6 6
7 1 6 9 5 4
5 0 4 0 3 9
 2
0 1 2 3 4 5
9 8 7 6 5 4
 2
0 2 9 1 8 5
0 7 4 3 2 5
 2
2 3 9 1 6 7
2 5 4 3 0 6
 2
5 7 4 2 1 9
2 2 7 1 1 8
 1
3 9 1 7 4 5
 3
7 7 2 5 3 2
3 0 0 6 4 4
1 2 1 1 9 1
 1
7 9 5 0 4 6
 3
7 1 3 0 2 4
2 4 3 0 9 5
1 9 8 0 6 5
 1
4 3 8 9 2 3

3
 9
 9
 4
 2
 10
 10
 1
 4
 0
 2
 5
 0
 8
 2
 2
 10
 19
 3
 3
 2
 0
 5
 19
 3
 2
 1
 2
 1
 4
 2
 9
 5
 8
 1
 10
 7
 0
 5
 4
 3
 5
 9
 9
 29
 0
 0
 1
 8
 9
 21
 6
 21
 1
 8
 6
 1
 21
 6
 3
 2
 0
 0
 1
 0
 0
 0
 2
 0
 3
 0
 98
 2
 9
 9
 10
 9
 7
 3
 21
 1
 3
 32
 19
 1
 9
 5
 7
 2
 1
 7
 0
 65
 0

#include <bits/stdc++.h>
using namespace std;
int MAX = 1000000;
void printArray(int N, int arr[]) {
  for (int n = 0; n < N; n++) printf("%d ", arr[n]);
  printf("\n");
}
void printVector(vector<int> &v) {
  for (int n = 0; n < v.size(); n++) printf("%d ", v[n]);
  printf("\n");
}
int maxInArray(int i, int j, int A[]) {
  int maxVal = -1e9;
  for (int k = i; k <= j; k++) {
    maxVal = max(maxVal, A[k]);
  }
  return maxVal;
}
int minInArray(int i, int j, int A[]) {
  int minVal = -1e9;
  for (int k = i; k <= j; k++) {
    minVal = min(minVal, A[k]);
  }
  return minVal;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0 || b == 0) return a ^ b;
  return gcd(b % a, a);
}
void zAlgorithm(int len, char s[], int *Z) {
  for (int n = 0; n < len; n++) Z[n] = 0;
  Z[0] = len;
  int l = 0, r = 0;
  for (int k = 1; k < len; k++) {
    if (!(k >= r)) {
      int p = k - l;
      if (Z[p] + k < r) {
        Z[k] = Z[p];
      } else {
        l = k;
        while (r < len && s[r] == s[r - k]) {
          r++;
        }
        Z[k] = r - k;
      }
    } else {
      int i = k, j = 0;
      while (i < len && s[i] == s[j]) {
        i++;
        j++;
      }
      l = k;
      r = i;
      Z[k] = j;
    }
  }
}
int findSmallestDivisor(int len, int *pre) {
  int k = 1;
  while (k <= len) {
    bool isMultiple = true;
    for (int i = 0; i < len; i += k) {
      if (pre[i] < k) {
        isMultiple = false;
        break;
      }
    }
    if (isMultiple) return k;
    k++;
  }
}
void seiveErathosthenes(int limit, vector<int> &primes) {
  if (limit < 2) return;
  bool isPrime[limit + 1];
  for (int i = 2; i < limit + 1; i++) isPrime[i] = true;
  for (int i = 2; i < limit + 1; i++) {
    if (isPrime[i]) {
      primes.push_back(i);
      for (int j = i * 2; j <= limit; j += i) {
        isPrime[j] = false;
      }
    }
  }
}
long long int numSubTree(int uu, vector<int> adjList[], int A[], int N) {
  stack<int> ss, s;
  ss.push(uu);
  while (ss.size()) {
    int u = ss.top();
    s.push(u);
    ss.pop();
    for (int i = 0; i < adjList[u].size(); i++) {
      int v = adjList[u][i];
      ss.push(v);
    }
  }
  long long int dp[N + 1];
  for (int n = 0; n < N + 1; n++) dp[n] = 0;
  while (s.size()) {
    int u = s.top();
    s.pop();
    long long int total = 1, prod = 1;
    bool isLeafNode = true;
    for (int i = 0; i < adjList[u].size(); i++) {
      isLeafNode = false;
      int v = adjList[u][i];
      if (A[uu] == A[v] && v >= uu) {
        continue;
      }
      prod = (prod * (dp[v] + 1)) % 1000000007;
    }
    dp[u] = prod;
  }
  return dp[uu];
}
vector<int> *getAdjListWithMin(int i, int D, int N, vector<int> adjList[],
                               int A[]) {
  vector<int> *modifiedAdjList = new vector<int>[N];
  stack<int> s;
  long long int minVal = A[i], maxVal = A[i] + D;
  bool visited[N];
  for (int n = 0; n < N; n++) {
    visited[n] = false;
  }
  s.push(i);
  while (s.size()) {
    int u = s.top();
    s.pop();
    visited[u] = true;
    for (int j = 0; j < adjList[u].size(); j++) {
      int v = adjList[u][j];
      if (!visited[v] && A[v] >= minVal && A[v] <= maxVal) {
        modifiedAdjList[u].push_back(v);
        s.push(v);
      }
    }
  }
  return modifiedAdjList;
}
bool makeNum(int x, vector<int> v) {
  int d = x % 10;
  if (v[d] == 0) return false;
  if (x / 10 == 0) {
    return true;
  }
  v[d]--;
  return makeNum(x / 10, v);
  v[d]++;
}
int main(int argc, char const *argv[]) {
  int N = 0;
  scanf("%d", &N);
  vector<int> v;
  for (int n = 0; n < 10; n++) v.push_back(0);
  for (int n = 0; n < N; n++) {
    bool existence[10];
    for (int k = 0; k < 10; k++) existence[k] = false;
    for (int i = 0; i < 6; i++) {
      int num = 0;
      scanf("%d", &num);
      existence[num] = true;
    }
    for (int k = 0; k < 10; k++)
      if (existence[k]) v[k]++;
  }
  int x = 1;
  while (makeNum(x, v)) {
    x++;
  }
  printf("%d\n", x - 1);
  return 0;
}
