#include <bits/stdc++.h>
using namespace std;
const long long int MOD = 1e9 + 7;
const long long int INF = 2e9 + 13;
const long long int mINF = -2e9 - 13;
const double PI = acos(-1.0);
const double EPS = 1e-9;
long long int mx(long long int x, long long int y) { return (x > y ? x : y); }
long long int mn(long long int x, long long int y) { return (x < y ? x : y); }
void max_self(long long int &x, long long int y) { x = mx(x, y); }
void min_self(long long int &x, long long int y) { x = mn(x, y); }
void add(long long int &x, long long int y) {
  x %= MOD;
  x += (y % MOD);
  x %= MOD;
}
void mul(long long int &x, long long int y) {
  x %= MOD;
  x *= (y % MOD);
  x %= MOD;
}
long long int us(long long int n, long long int x, long long int m) {
  if (x == 0) return 1;
  long long int a = us(n, x >> 1, m);
  return (((a * a) % m) * (x & 1 ? n : 1)) % m;
}
int main(int argc, char **argv) {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int N, M;
  cin >> N >> M;
  vector<set<long long int>> sart(N);
  for (long long int i = 0; i < M; ++i) {
    long long int s, c;
    cin >> s >> c;
    s--;
    sart[s].insert(c);
  }
  for (long long int i = 0; i < N; ++i) {
    if (sart[i].size() > 1) {
      cout << -1 << '\n';
      return 0;
    }
  }
  for (long long int i = 0; i < N; ++i) {
    if (*(sart[i].begin()) < 0) {
      cout << -1 << '\n';
      return 0;
    }
  }
  if (*(sart[0].begin()) == 0 and N > 1) {
    cout << -1 << '\n';
    return 0;
  }
  for (long long int i = 0; i < N; ++i) cout << *(sart[i].begin());
  cout << '\n';
  return 0;
}
