using System;
using System.Collections.Generic;
using System.Linq;

namespace easy_Atcoder
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] NM = Array.ConvertAll(Console.ReadLine().Split(),int.Parse);
            int N = NM[0];
            int M = NM[1];
            var scDict = new Dictionary<int,int>();
            var sc = new int[M,2];
            bool flag = true;
            for(int i=0;i<M;i++){
                var read = Array.ConvertAll(Console.ReadLine().Split(),int.Parse);
                if(scDict.ContainsKey(read[0])){
                    if(scDict[read[0]]!=read[1]){
                        flag = false;
                    }
                }else if(read[0]==1 && read[1]==0 && N != 1){
                        flag = false;
                }else{
                    scDict.Add(read[0],read[1]);
                }
            }
            var ans = 0;
            if(flag){
                for(int i = 1; i <=  N; i++){
                    if(!scDict.ContainsKey(i)){
                        if(N==1){
                            scDict.Add(i,0);
                        }else if(i!=1){
                            scDict.Add(i,0);
                        }else{
                            scDict.Add(i,1);
                        }
                    }
                    ans += scDict[i] * (int)Math.Pow(10,N-i);
                }
            }
            Console.WriteLine(flag?ans:-1);
        }
            // float[] ABN = Array.ConvertAll(Console.ReadLine().Split(),float.Parse);
            // long[] NK = Array.ConvertAll(Console.ReadLine().Split(),long.Parse);
            // long N = NK[0];
            // long K = NK[1];
            // long K = long.Parse(Console.ReadLine());
            // int[] abc = Array.ConvertAll(Console.ReadLine().Split(),int.Parse);
            // string S = Console.ReadLine();
            // int x = int.Parse(Console.ReadLine());
            // int b = int.Parse(Console.ReadLine());
            // int N = int.Parse(Console.ReadLine());
            // float N = float.Parse(Console.ReadLine());
            // string c = Console.ReadLine();
            // string B = Console.ReadLine();
            // string[] s = Console.ReadLine().Split();
            // var s = (new string[] { Console.ReadLine(), Console.ReadLine(), Console.ReadLine() }).Select(float.Parse);
            // float[] a = Array.ConvertAll(Console.ReadLine().Split(),float.Parse);
            // var X = Console.ReadLine();
            // int[,] abcd = new int[NMQ[2],4];
            // int[] A = new int[NMQ[0]];
            // int[] A_num = new int[NMQ[0]];
            // long[] s=Array.ConvertAll(Console.ReadLine().Split(),long.Parse);
            // var hs=new Dictionary<long,long>();
            // for(int i=0;i<s[0];i++){
            //     long[] q=Array.ConvertAll(Console.ReadLine().Split(),long.Parse);
            //     if(hs.ContainsKey(q[0])){hs[q[0]]+=q[1];}
            //     else{hs.Add(q[0],q[1]);}
            // }
        
        // //最小公倍数
        // static long Lcm(long a, long b)
        // {
        //     return a/Gcd(a,b)*b;
        // }

        // //最大公約数
        // static long Gcd(long m, long n)
        // {
        //     if(n==0)return m;
        //     return Gcd(n,m%n);
        // }
    }
}


Measured memory_bytes: 13152