N, M = input().split()
N, M = int(N), int(M)

if N == 1 and M == 0:  # 1桁の数字指定なし
    ans = 0
elif N == 1:  # 1桁で数字指定有り:cの最小値
    c_list = []
    for m in range(M):
        s, c = input().split()
        c_list.append(int(c))
    ans = min(c_list)
elif M == 0:  # 2桁以上で数字指定無し:10or100
    ans = 10**(N-1)
else:  # 2桁以上かつ数字指定有り:指定された数字から答えを出す
    # ただし、1桁目についての指定で追加処理
    guess = []
    s1c0_flag = False  # s=1,c=0が指定されたかのフラグ
    for n in range(N):
        guess.append(-1)
        # guess=[-1,-1,-1]
    for m in range(M):
        s, c = input().split()
        s, c = int(s), int(c)
        if s == 1 and c == 0 and guess[0] == -1:
            s1c0_flag = True
        elif guess[s-1] == -1 or guess[s-1] > c:  # 未代入or小さい数字なら書き換え
            guess[s-1] = c
    ans = 0
    for n in range(N):
        if not guess[n] == -1:  # 指定がある桁を加算
            ans += guess[n]*(10**(N-1-n))

    # 1桁目の処理
    if s1c0_flag and guess[0] == -1:  # 1桁目に0以外が指定されなかった時
        ans = -1
    elif guess[0] == -1:  # 1桁目が完全に指定なしならば1桁目は1
        ans += 10**(N-1)
    else:  # それ以外(1桁目に0以外の数字が指定された時)は上記で算出した答え
        pass

print(ans)
