Buggy python submission (verdict: Runtime Error):
# coding: utf-8
# Your code here!
# coding: utf-8
from fractions import gcd 
from functools import reduce
import sys
sys.setrecursionlimit(200000000)
from inspect import currentframe


# my functions here!
#標準エラー出力
def printargs2err(*args):
    names = {id(v):k for k,v in currentframe().f_back.f_locals.items()}
    print(', '.join(names.get(id(arg),'???')+' : '+repr(arg) for arg in args),file=sys.stderr)






def printglobals():
    for (symbol, value) in globals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
def printlocals():
    for (symbol, value) in locals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
#入力（後でいじる）
def pin(type=int):
    return map(type,input().split())
     
#input

def resolve():
    N,M=pin()
    ans=[1]+[0]*(N-1)
    check=[False]*3
    if N==0:
        for i in range(M):
            p,m=pin()
            if p==1 and m!=0:
                if check[p-1]==False:
                    ans[0]=m
                    check[p-1]=True
                else:
                    if ans[0]!=m:
                        print(-1)
                        return
    else:
        for i in range(M):
            p,m=pin()
            if p==1 and m!=0:
                if check[p-1]==False:
                    ans[0]=m
                    check[p-1]=True
                else:
                    if ans[0]!=m:
                        print(-1)
                        return
            elif p==1 and m==0:
                print(-1)
                return
            elif p!=1:
                if check[p-1]==False:
                    ans[p-1]=m
                    check[p-1]=True
                else:
                    if ans[p-1]!=m:#二個以上ヒントでちゃった場合
                        print(-1)
                        return
    a=""
    for i in range (M):
        a+=str(ans[i])
    print(int(a))
    #print(hint)
    
    #print([["NA","YYMM"],["MMYY","AMBIGUOUS"]][cMMYY][cYYMM])
#if __name__=="__main__":resolve()

"""
#printデバッグ消した？
#前の問題の結果見てないのに次の問題に行くの？
"""
"""
お前カッコ閉じるの忘れてるだろ
"""

import sys
from io import StringIO
import unittest

class TestClass(unittest.TestCase):
    def assertIO(self, input, output):
        stdout, stdin = sys.stdout, sys.stdin
        sys.stdout, sys.stdin = StringIO(), StringIO(input)
        resolve()
        sys.stdout.seek(0)
        out = sys.stdout.read()[:-1]
        sys.stdout, sys.stdin = stdout, stdin
        self.assertEqual(out, output)
    def test_入力例_1(self):
        input = """3 3
1 7
3 2
1 7"""
        output = """702"""
        self.assertIO(input, output)
    def test_入力例_2(self):
        input = """3 2
2 1
2 3"""
        output = """-1"""
        self.assertIO(input, output)
    def test_入力例_3(self):
        input = """3 1
1 0"""
        output = """-1"""
        self.assertIO(input, output)

if __name__ == "__main__":
    resolve()

Fixed submission:
# coding: utf-8
# Your code here!
# coding: utf-8
from fractions import gcd 
from functools import reduce
import sys
sys.setrecursionlimit(200000000)
from inspect import currentframe


# my functions here!
#標準エラー出力
def printargs2err(*args):
    names = {id(v):k for k,v in currentframe().f_back.f_locals.items()}
    print(', '.join(names.get(id(arg),'???')+' : '+repr(arg) for arg in args),file=sys.stderr)






def printglobals():
    for (symbol, value) in globals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
def printlocals():
    for (symbol, value) in locals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
#入力（後でいじる）
def pin(type=int):
    return map(type,input().split())
     
#input

def resolve():
    N,M=pin()
    if N==1:
        ans=[0]
    else:
        ans=[1]+[0]*(N-1)
    h=[False]*3#ヒントもらったかどうか
    for i in range(M):
        p,m=pin()
        if h[p-1]==False:#ヒントもらってなければ
            if p==1 and m==0 and N!=1: #2桁以上の数字の時に先頭が0になれば
                print(-1)
                return
            else:#そうじゃなかったらそのまま代入してhintをTrueに
                h[p-1]=True
                ans[p-1]=m
        else:#ヒントもらってたら
            if ans[p-1]!=m:#ヒントで別の数字が来たら
                print(-1)
                return
            else:#そうじゃなかったらそのまま代入もいらない
                pass
    a=""
    for n in range(N):
        a+=str(ans[n])
    print(int(a))
    #print([["NA","YYMM"],["MMYY","AMBIGUOUS"]][cMMYY][cYYMM])
#if __name__=="__main__":resolve()

"""
#printデバッグ消した？
#前の問題の結果見てないのに次の問題に行くの？
"""
"""
お前カッコ閉じるの忘れてるだろ
"""

import sys
from io import StringIO
import unittest

class TestClass(unittest.TestCase):
    def assertIO(self, input, output):
        stdout, stdin = sys.stdout, sys.stdin
        sys.stdout, sys.stdin = StringIO(), StringIO(input)
        resolve()
        sys.stdout.seek(0)
        out = sys.stdout.read()[:-1]
        sys.stdout, sys.stdin = stdout, stdin
        self.assertEqual(out, output)
    def test_入力例_1(self):
        input = """3 3
1 0
3 2
2 7"""
        output = """-1"""
        self.assertIO(input, output)
    def test_入力例_2(self):
        input = """3 2
2 1
2 3"""
        output = """-1"""
        self.assertIO(input, output)
    def test_入力例_3(self):
        input = """3 1
1 0"""
        output = """-1"""
        self.assertIO(input, output)


if __name__=="__main__":resolve()

Buggy python submission (verdict: Runtime Error):
# coding: utf-8
# Your code here!
# coding: utf-8
from fractions import gcd 
from functools import reduce
import sys
sys.setrecursionlimit(200000000)
from inspect import currentframe


# my functions here!
#標準エラー出力
def printargs2err(*args):
    names = {id(v):k for k,v in currentframe().f_back.f_locals.items()}
    print(', '.join(names.get(id(arg),'???')+' : '+repr(arg) for arg in args),file=sys.stderr)






def printglobals():
    for (symbol, value) in globals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
def printlocals():
    for (symbol, value) in locals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
#入力（後でいじる）
def pin(type=int):
    return map(type,input().split())
     
#input
def resolve():
    N,M=pin()
    ans=[1]+[0]*(N-1)
    check=[False]*3
    for i in range(M):
        p,m=pin()
        if p==1 and m!=0:
            if check[p-1]==False:
                ans[0]=m
                check[p-1]=True
            else:
                if ans[0]!=m:
                    print(-1)
                    return
        elif p==1 and m==0:
            print(-1)
            return
        elif p!=1:
            if check[p-1]==False:
                ans[p-1]=m
                check[p-1]=True
            else:
                if ans[p-1]!=m:
                    print(-1)
                    return
    a=""
    for i in range (M):
        a+=str(ans[i])
    print(int(a))
    #print(hint)
    
    #print([["NA","YYMM"],["MMYY","AMBIGUOUS"]][cMMYY][cYYMM])
#if __name__=="__main__":resolve()
"""
#printデバッグ消した？
#前の問題の結果見てないのに次の問題に行くの？
"""
"""
お前カッコ閉じるの忘れてるだろ
"""

import sys
from io import StringIO
import unittest

class TestClass(unittest.TestCase):
    def assertIO(self, input, output):
        stdout, stdin = sys.stdout, sys.stdin
        sys.stdout, sys.stdin = StringIO(), StringIO(input)
        resolve()
        sys.stdout.seek(0)
        out = sys.stdout.read()[:-1]
        sys.stdout, sys.stdin = stdout, stdin
        self.assertEqual(out, output)
    def test_入力例_1(self):
        input = """3 3
1 7
3 2
1 7"""
        output = """702"""
        self.assertIO(input, output)
    def test_入力例_2(self):
        input = """3 2
2 1
2 3"""
        output = """-1"""
        self.assertIO(input, output)
    def test_入力例_3(self):
        input = """3 1
1 0"""
        output = """-1"""
        self.assertIO(input, output)

if __name__=="__main__":resolve()

Fixed submission:
# coding: utf-8
# Your code here!
# coding: utf-8
from fractions import gcd 
from functools import reduce
import sys
sys.setrecursionlimit(200000000)
from inspect import currentframe


# my functions here!
#標準エラー出力
def printargs2err(*args):
    names = {id(v):k for k,v in currentframe().f_back.f_locals.items()}
    print(', '.join(names.get(id(arg),'???')+' : '+repr(arg) for arg in args),file=sys.stderr)






def printglobals():
    for (symbol, value) in globals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
def printlocals():
    for (symbol, value) in locals().items():
        print('symbol="%s"、value=%s' % (symbol, value),file=sys.stderr)
#入力（後でいじる）
def pin(type=int):
    return map(type,input().split())
     
#input

def resolve():
    N,M=pin()
    if N==1:
        ans=[0]
    else:
        ans=[1]+[0]*(N-1)
    h=[False]*3#ヒントもらったかどうか
    for i in range(M):
        p,m=pin()
        if h[p-1]==False:#ヒントもらってなければ
            if p==1 and m==0 and N!=1: #2桁以上の数字の時に先頭が0になれば
                print(-1)
                return
            else:#そうじゃなかったらそのまま代入してhintをTrueに
                h[p-1]=True
                ans[p-1]=m
        else:#ヒントもらってたら
            if ans[p-1]!=m:#ヒントで別の数字が来たら
                print(-1)
                return
            else:#そうじゃなかったらそのまま代入もいらない
                pass
    a=""
    for n in range(N):
        a+=str(ans[n])
    print(int(a))
    #print([["NA","YYMM"],["MMYY","AMBIGUOUS"]][cMMYY][cYYMM])
#if __name__=="__main__":resolve()

"""
#printデバッグ消した？
#前の問題の結果見てないのに次の問題に行くの？
"""
"""
お前カッコ閉じるの忘れてるだろ
"""

import sys
from io import StringIO
import unittest

class TestClass(unittest.TestCase):
    def assertIO(self, input, output):
        stdout, stdin = sys.stdout, sys.stdin
        sys.stdout, sys.stdin = StringIO(), StringIO(input)
        resolve()
        sys.stdout.seek(0)
        out = sys.stdout.read()[:-1]
        sys.stdout, sys.stdin = stdout, stdin
        self.assertEqual(out, output)
    def test_入力例_1(self):
        input = """3 3
1 0
3 2
2 7"""
        output = """-1"""
        self.assertIO(input, output)
    def test_入力例_2(self):
        input = """3 2
2 1
2 3"""
        output = """-1"""
        self.assertIO(input, output)
    def test_入力例_3(self):
        input = """3 1
1 0"""
        output = """-1"""
        self.assertIO(input, output)


if __name__=="__main__":resolve()