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 = []
    ans_exist = True  # 矛盾なく答えが存在するか
    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 not guess[s-1] == -1 and not guess[s-1] == c:
            ans_exist = False
            break
        # 1桁目に0が指定された時
        elif s == 1 and c == 0:
            ans_exist = False
            break
        else:
            guess[s-1] = c

    # 矛盾なく解が存在するなら指定がある桁を加算
    if ans_exist:
        # 1桁目に指定が無いなら1桁目は1
        ans = 10**(N-1) if guess[0] == -1 else 0
        for n in range(N):
            if not guess[n] == -1:
                ans += guess[n]*(10**(N-1-n))
    else:
        ans = -1

print(ans)