#-----------入力-------------------------
n,m = gets.split.map(&:to_i)

sc = Array.new(m).map{Array.new(2,0)}
m.times { |i| 
    a,b = gets.split.map(&:to_i)
    sc[i][0] = a
    sc[i][1] = b
}
=begin
    条件 
        0～999まで
        N桁     0~9,10~99,100~999
        si桁目がciである最小の数
    否定条件
        1桁目が0
        N桁目(si)が同じでciが異なる
=end

#1 まずN桁の0を用意
num = Array.new
n.times{ |i| num.push(0) }
#2 各要素を入れていく(1桁目が0ならアウト、既に0ではない異なる数値が入っていればアウト)
flag =true
sc.each{ |i,v|
    if i == 1 && v == 0 then flag = false; break end   #1桁目が0ならアウト
    if num[i-1] != 0 && num[i-1] != v then flag = false; break end #0ではない異なる数値が入っていればアウト)
    num[i-1] = v
}


if flag == true then
    if num[0] == 0 then num[0] = 1 end
    num.each{|v| print(v) }
    puts("")
else
    puts("-1")
end