
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;

namespace at_coder
{
#if TEST
    [TestClass]
#endif
    public class Test_157_c
{

        static int INIT_VAL = -1;
        
#if TEST
        public static void Test_Main()
#else
        public static void Main()
#endif
        {
            var ar = ReadIntArray();

            int N = ar[0];
            int M = ar[1];
            int[] data = new int[N];

            for(int i=0;i<N;i++)
            {
                data[i] = INIT_VAL;
            }

            int ngCount = 0;

            for(int i=0;i<M;i++)
            {
                ar = ReadIntArray();
                int ix = ar[0];
                int val = ar[1];

                if (check2(data, ix, val) == false)
                {
                    ngCount++;
                }
                if (check3(data, ix, val) == false)
                {
                    ngCount++;
                }

                if (ngCount == 0)
                {
                    data[ix - 1] = val;
                }
            }

            if (ngCount == 0)
            {
                // 先頭桁が ０ の場合は １ にする
                if (data[0] == INIT_VAL)
                {
                    data[0] = 1;
                }

                // 結果表示
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < data.Length; i++)
                {
                    sb.Append(data[i].ToString());
                }
                Console.WriteLine(sb.ToString());
            }
            else
            {
                Console.WriteLine("-1");
            }
            
        }

        private static bool check3(int[] data, int ix, int val)
        {
            // すでに同じ桁に同じ数字が設定されていないことのチェック
            if (data[ix - 1] != INIT_VAL)
            {
                if (data[ix - 1] != val)
                {
                    return false;
                }
            }

            return true;
        }
        private static bool check2(int[] data, int ix, int val)
        {
            // 先頭桁が０でないことのチェック
            if (ix == 1 && val == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }


        private static int[] ReadIntArray()
        {
            string[] ss = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            int[] ar = new int[ss.Length];
            for (int i = 0; i < ss.Length; i++)
            {
                ar[i] = int.Parse(ss[i]);
            }
            return ar;
        }

#if TEST
#else
    }
}
#endif