using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AtCoders {
	class Program {
		static void Main(string[] args) {

			var inputArray = retreiveIntArray();
			var N = inputArray[0];
			var M = inputArray[1];

			var inputCount = 2;

			// 不正な入力は処理しない
			if (inputArray.Length != inputCount) {
				Console.WriteLine("invalid input");
				return;
			}

			var conditionArray = new int[M][];
			//条件を格納する
			for (int i = 0; i < M; i++) {
				var conArray = retreiveIntArray();
				conditionArray[i]= conArray;
			}


			//答えの出力
			var ans = getAnswer(N, conditionArray);
			Console.WriteLine(ans);

		}

		private static int getAnswer(int N, int[][] conditionArray) {

			var min = (int)Math.Pow(10 , N-1);
			var max = (int)Math.Pow(10, N) - 1;
			//Console.WriteLine($"max{max}min{min}:{conditionArray[0][1]} ");

			//foreach (var item in conditionArray) {
				//Console.WriteLine($"{item[0]},{item[1]}");
			//}

			//Nの条件を満たす数を、小さいほうから順番に試す
			for (int i = min; i <= max; i++) {

				var result = true;
				foreach (var item in conditionArray) {
					var Nstr = i.ToString();
					var hidariketa = item[0];

					//桁が大きすぎづ場合はダメとして次へ
					if (Nstr.Length < hidariketa) {
						result = false;
						continue;
					}

					//　指定した桁の数値が正しい
					if (Nstr[hidariketa - 1] != item[1].ToString()[0]) {
						result =false;
					}
				}
				if (result) {
					return i;
				}
			}
			return -1;

		}

		/// <summary>
		/// スペースで区切られた文字列配列の入力を受け取る
		/// </summary>
		/// <returns></returns>
		private static string[] retreiveStringArray() {
			var inputArray =  Console.ReadLine().Split(' ');
			return inputArray;
		}

		/// <summary>
		/// スペースで区切られた整数配列の入力を受け取る
		/// </summary>
		/// <returns></returns>
		private static int[] retreiveIntArray() {
			var inputArray = Console.ReadLine().Split(' ');
			var intArray = inputArray.Select(s => int.Parse(s));
			return intArray.ToArray();
		}
	}
}
