#include <bits/stdc++.h>
using namespace std;

int main() {
  int N, M;
  cin >> N >> M;
  vector<vector<int>> data(N);//N桁収納用
  //条件を表にする
  vector<vector<int>> ruru(M, vector<int>(2));
  for (int i = 0; i < M; i++) {
      cin >> ruru[i][0] >> ruru[i][1];
  }
  //条件の内、桁数がかぶってるかつ数字がかぶってたら－1を表示して終了
  //↑がなかったらdataに収納する
  for(int i=0; i < M; i++){
    for(int k = i+1; k < M; k++){
     if(ruru[i][0] == ruru[k][0] && ruru[i][1]!=ruru[k][1]){
     cout << -1 << endl;
     return 0;
     }
     data[(ruru[i][0]-1)] = (ruru[i][1]);
    }
  int ans;
  //Nが1のときそのまま表示
  //Nが2以上の時一番上の桁を1にして、100とか10とかかけて足す
  //けっかを表示
   if(N==1){
     ans=data[0];}
   if(N==2){
      if (data[0] == 0) {
        data[0] == 1;
      }
     ans= 10*data[0]+data[1];
    }
   if(N==3){
      if (data[0] == 0) {
        data[0] == 1;
      }
   ans= 100*data[0]+10*data[1]+data[2];
   }
    
   cout << ans << endl;

}