import math

# AtCoder Beginner Contest 157 - C - Guess The Number
#【註】解説 pdf 内 解法 1 を前提とします。
#（解法 1：候補となる数を順番に探索し、それが条件を満たすかどうかを確認する）

# 【備考】入力を受け取り N, M, s, c に格納
# N：桁数、M：条件数
N,M=map(int,input().split())
s=[]
c=[]
for i in range(M):
    #【註】リストに値を追加するためには append() 関数を利用します。
    # N, M の入力のように、まずは一度何らかの変数に値を格納しておき、その変数をリストの末尾に
    # 追加する、という形をとるのが妥当です。
    #【参考】https://note.nkmk.me/python-list-append-extend-insert/
    a, b = map(int,input().split())
    s.append(a)
    c.append(b)

#【註】ここで、N 桁という桁数が与えられていますから、探索範囲は 10^(N-1) から 10^N-1 までとなります。
# 例：N = 3 （3 桁）のとき、10^2 = 100 から 10^3-1 = 999 までを探索すればよい
# for 文にこのような数を連番で与え（range を用いると簡単です）、それを文字列にした上で、条件を満たすかどうかを 1 つずつ
# 確認していきます。

# 【註】その上で、もし条件に合致する数が見つかった場合には、それ以降の処理を行う意味がなくなりますから、
# 「条件の全てに合致する整数が見つかったかどうか」を記録する変数を用いて状況を記録しておくと良いでしょう。
found = False

for i in range(pow(10,N-1), pow(10,N)):
    
    # 文字列に変換
    i_str = str(i)

    passed = True
    for j in range(M):
        if not i_str[s[j]-1] == c[j]:
            passed = False
            break
    if passed:
        found = True
        print(i)
        break

if not found:
    print("-1")
