using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
    static void Main(string[] args)
    {
            // 入力
            string[] sS = System.Console.ReadLine().Trim().Split(' ');
            int iN = int.Parse(sS[0]);
            int iM = int.Parse(sS[1]);
            List<ClsFig> lstFig = new List<ClsFig>();
            for (int i = 0; i < iM; i++)
            {
                sS = System.Console.ReadLine().Trim().Split(' ');
                ClsFig oneUsr = new ClsFig();
                oneUsr.iK = int.Parse(sS[0]);
                oneUsr.iF = int.Parse(sS[1]);
                lstFig.Add(oneUsr);
            }

            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Start();

            // 解析
            int iOut = -99;
            lstFig.Sort(delegate (ClsFig mca1, ClsFig mca2) { return (int)(mca1.iK - mca2.iK); });              // 左からの桁Noの昇順

            // 指定桁以外の桁指定矛盾
            for (int k = 0; k < lstFig.Count; k++) { if (lstFig[k].iK > iN) { iOut = -1; break; } }             // 存在しない指定桁(このような入力はありえない)
            // 指定桁の複数指定矛盾判断
            if (iOut == -99)
            {
                for (int i = 1; i <= iN; i++)
                {
                    Boolean bCnt = false;
                    List<int> nowKet = new List<int>();
                    for (int k = 0; k < lstFig.Count; k++)
                    {
                        if (lstFig[k].iK == i)                                                                  // 指定桁のみの
                        {
                            nowKet.Add(lstFig[k].iF);
                        }
                    }
                    if (nowKet.Count > 1)                                                                       // 同じ指定桁が複数
                    {
                        if (nowKet.Distinct().ToList().Count != 1) { bCnt = true; }                             // 指定桁の指定矛盾
                    }
                    if (bCnt) { iOut = -1; break; }                                                             // 異常
                }
            }
            // 1桁以上の時の先頭桁の0指定
            if (iOut == -99 && iN > 1)
            {
                for (int k = 0; k < lstFig.Count; k++)
                {
                    if (lstFig[k].iK == 1 && lstFig[k].iF == 0)                                                 // 先頭桁0指定
                    {
                        iOut = -1; break;
                    }
                }
            }
            // 指定文字生成
            if (iOut == -99 )
            {
                string sOut = "";
                switch (iN)
                {
                    case 1: sOut = "A";   break;
                    case 2: sOut = "AB";  break;
                    case 3: sOut = "ABC"; break;
                }
                int cS = (int)'A';
                for (int k = 0; k < lstFig.Count; k++)
                {
                    sOut = sOut.Replace(((char)(cS + lstFig[k].iK - 1)).ToString(), lstFig[k].iF.ToString());   // 指定桁を指定文字に
                }
                sOut = sOut.Replace("A", "0").Replace("B", "0").Replace("C", "0");
                iOut = int.Parse(sOut);
            }
            // 最終的な桁数が合わない場合は先頭に1付加もしくは下位桁削除
            if (iOut != -1)
            {
                if (iOut.ToString().Length != iN)
                {
                    if (iN == 3 && iOut.ToString().Length == 1) { iOut += 100; }
                    if (iN == 3 && iOut.ToString().Length == 2) { iOut += 100; }
                    if (iN == 2 && iOut.ToString().Length == 1) { iOut += 10;  }
                    //if (iN == 2 && iOut.ToString().Length == 3) { iOut /= 10;  }
                    //if (iN == 1 && iOut.ToString().Length == 3) { iOut /= 100; }
                }
            }

            // 出力
            System.Console.WriteLine("{0}", iOut.ToString().Trim());

            sw.Stop();
#if DEBUG
            Console.WriteLine();
            Console.WriteLine("{0}", sw.Elapsed.ToString());
            Console.WriteLine("続行するには何かキーを押してください．．．");
            Console.ReadKey();
#endif
    }

        // Poll情報
        private class ClsFig
        {
            public int  iK { get; set; } = 0;               // 左からの桁No
            public int  iF { get; set; } = 0;               // の値
        }

}


Measured memory_bytes: 13396