#include <bits/stdc++.h>
using namespace std;
template <class _T>
inline _T sqr(const _T& x) {
  return x * x;
}
template <class _T>
inline string tostr(const _T& a) {
  ostringstream os("");
  os << a;
  return os.str();
}
const long double PI = 3.1415926535897932384626433832795;
const long double EPS = 1e-11;
int n;
int a[100][4];
int ok(int x) {
  int q[10] = {0};
  int c[4];
  int d[4];
  for (int j = 0; j < (int)(4); j++) {
    c[j] = x % 10;
    if (q[c[j]]) return false;
    q[c[j]] = true;
    x /= 10;
  }
  for (int i = 0; i < (int)(n); i++) {
    x = a[i][0];
    int k1 = 0;
    int k2 = 0;
    bool u[4] = {0};
    for (int j = 0; j < (int)(4); j++) {
      d[j] = x % 10;
      x /= 10;
      if (d[j] == c[j]) {
        k1++;
        u[j] = true;
      }
    }
    for (int j = 0; j < (int)(4); j++) {
      if (d[j] != c[j]) {
        for (int k = 0; k < (int)(4); k++) {
          if (!u[k] && c[k] == d[j]) {
            u[k] = true;
            k2++;
            break;
          }
        }
      }
    }
    if (k1 != a[i][1] || k2 != a[i][2]) return false;
  }
  return true;
}
int main() {
  cout << setiosflags(ios::fixed) << setprecision(10);
  scanf("%d", &n);
  for (int i = 0; i < (int)(n); i++) {
    for (int j = 0; j < (int)(3); j++) {
      scanf("%d", &a[i][j]);
    }
  }
  int cnt = 0;
  int ans = -1;
  for (int i = 0; i < (int)(10000); i++) {
    if (ok(i)) {
      cnt++;
      ans = i;
    }
  }
  if (cnt == 1) {
    printf("%04d\n", ans);
  } else if (!cnt) {
    puts("Incorrect data");
  } else {
    puts("Need more data");
  }
  return 0;
}
