open System
open System.Collections.Generic

[<AutoOpen>]
module Cin =
    let read f = stdin.ReadLine() |> f
    let reada f = stdin.ReadLine().Split() |> Array.map f
    let readChars() = read string |> Seq.toArray
    let readInts() = readChars() |> Array.map (fun x -> Convert.ToInt32(x.ToString()))

[<AutoOpen>]
module Cout =
    let writer = new IO.StreamWriter(new IO.BufferedStream(Console.OpenStandardOutput()))
    let print (s: string) = writer.Write s
    let println (s: string) = writer.WriteLine s
    let inline puts (s: ^a) = string s |> println

// -----------------------------------------------------------------------------------------------------

// -----------------------------------------------------------------------------------------------------

let main() =
    let [| N; M |] = reada int
    let scs = SortedDictionary<int, int>()
    for i in 0 .. M - 1 do
        let [| s; c |] = reada int
        let s = s - 1
        if N > 1 && s = 0 && c = 0 then
            printfn "-1"
            exit 0
        match scs.ContainsKey(s) with
        | true ->
            if scs.[s] <> c then
                printfn "%d" -1
                exit 0
        | _ -> scs.Add(s, c)

    let lim = pown 10 N
    for i in 0 .. lim - 1 do
        let a = string i
        let mutable ok = true
        for kv in scs do
            let s, c = kv.Key, kv.Value
            match s >= a.Length with
            | true -> ok <- false
            | _ ->
                let b = Convert.ToInt32(string a.[s])
                if b <> c then ok <- false
        if ok then
            printfn "%s" a
            exit 0

    puts -1
    ()

// -----------------------------------------------------------------------------------------------------
main()
writer.Dispose()
