#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const double EPS = 1e-9;
signed main() {
  do {
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  } while (0);
  int n;
  cin >> n;
  vector<int> v1(6);
  vector<int> v2(6);
  vector<int> v3(6);
  bool flag1 = 0;
  for (int i = 0; i < (int)(6); ++i) {
    cin >> v1[i];
    if (v1[i] == 1) flag1 = 17;
  }
  if (n >= 2) {
    for (int i = 0; i < (int)(6); ++i) {
      cin >> v2[i];
      if (v2[i] == 1) flag1 = 17;
    }
  }
  if (n == 3) {
    for (int i = 0; i < (int)(6); ++i) {
      cin >> v3[i];
      if (v3[i] == 1) flag1 = 17;
    }
  }
  sort(v1.begin(), v1.end());
  sort(v2.begin(), v2.end());
  sort(v3.begin(), v3.end());
  if (!flag1)
    cout << 0;
  else {
    int x = 0;
    if (n == 1) {
      set<int> s;
      set<int>::iterator it;
      s.clear();
      for (int i = 0; i < (int)(6); ++i) {
        s.insert(v1[i]);
      }
      for (int i = 0; i < (int)(9); ++i) {
        if (s.find(i + 1) == s.end()) {
          x = i;
          break;
        }
      }
    } else if (n == 2) {
      set<int> s;
      for (int i = 0; i < (int)(6); ++i) {
        s.insert(v1[i]);
        s.insert(v2[i]);
      }
      for (int i = 0; i < (int)(6); ++i) {
        for (int j = 0; j < (int)(6); ++j) {
          s.insert(10 * v1[i] + v2[j]);
          s.insert(v1[i] + 10 * v2[j]);
        }
      }
      for (int i = 0; i < (int)(99); ++i) {
        if (s.find(i + 1) == s.end()) {
          x = i;
          break;
        }
      }
    } else {
      set<int> s;
      for (int i = 0; i < (int)(6); ++i) {
        s.insert(v1[i]);
        s.insert(v2[i]);
        s.insert(v3[i]);
      }
      for (int i = 0; i < (int)(6); ++i) {
        for (int j = 0; j < (int)(6); ++j) {
          s.insert(10 * v1[i] + v2[j]);
          s.insert(v1[i] + 10 * v2[j]);
          s.insert(10 * v1[i] + v3[j]);
          s.insert(v1[i] + 10 * v3[j]);
          s.insert(10 * v2[i] + v3[j]);
          s.insert(v2[i] + 10 * v3[j]);
        }
      }
      for (int i = 0; i < (int)(6); ++i) {
        for (int j = 0; j < (int)(6); ++j) {
          for (int k = 0; k < (int)(6); ++k) {
            s.insert(100 * v1[i] + 10 * v2[j] + v3[k]);
            s.insert(100 * v1[i] + v2[j] + 10 * v3[k]);
            s.insert(10 * v1[i] + 100 * v2[j] + v3[k]);
            s.insert(10 * v1[i] + v2[j] + 100 * v3[k]);
            s.insert(v1[i] + 100 * v2[j] + 10 * v3[k]);
            s.insert(v1[i] + 10 * v2[j] + 100 * v3[k]);
          }
        }
      }
      for (int i = 0; i < (int)(999); ++i) {
        if (s.find(i + 1) == s.end()) {
          x = i;
          break;
        }
      }
    }
    cout << x;
  }
}
