#include <bits/stdc++.h>
using namespace std;
const double EPS = numeric_limits<double>::epsilon();
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
int main() {
  int N, M;
  cin >> N >> M;
  string result = "-1";
  vector<pair<int, int> > list(M);
  for (int(i) = 0; i < (M); i++) {
    cin >> list[i].first >> list[i].second;
  }
  for (int(i) = 0; i < (1000); i++) {
    string str = to_string(i);
    bool is_exist = true;
    if (str.length() != N) continue;
    for (int(j) = 0; j < (M); j++) {
      string s = str.substr(list[j].first - 1, 1);
      string x = to_string(list[j].second);
      if (s != x) is_exist = false;
      if (!is_exist)
        break;
      else
        result = str;
    }
    if (is_exist)
      break;
    else
      result = "-1";
  }
  cout << result << endl;
  return 0;
}
