Buggy python submission (verdict: Runtime Error):
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

@jit
def func()
    for i in range(1,N+1):
        for j in range(1,H+1):
            if i == 1:
                if j-A[i-1]<0:
                    G[j] = B[i-1]
                else:
                    G[j] = G[j-A[i-1]]+B[i-1]
            elif j-A[i-1]<0:
                G[j] = min(G[j], B[i-1])
            else:
                G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        return G[H]
        
print(func())

Fixed submission:
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

for i in range(1,N+1):
    for j in range(1,H+1):
        if i == 1:
            if j-A[i-1]<0:
                G[j] = B[i-1]
            else:
                G[j] = G[j-A[i-1]]+B[i-1]
        elif j-A[i-1]<0:
            G[j] = min(G[j], B[i-1])
        else:
            G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        
print(G[H])

Buggy python submission (verdict: Runtime Error):
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

@jit
def func()
    for i in range(1,N+1):
        for j in range(1,H+1):
            if i == 1:
                if j-A[i-1]<0:
                    G[j] = B[i-1]
                else:
                    G[j] = G[j-A[i-1]]+B[i-1]
            elif j-A[i-1]<0:
                G[j] = min(G[j], B[i-1])
            else:
                G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        return G[H]
        
print(func())

Fixed submission:
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

for i in range(1,N+1):
    for j in range(1,H+1):
        if i == 1:
            if j-A[i-1]<0:
                G[j] = B[i-1]
            else:
                G[j] = G[j-A[i-1]]+B[i-1]
        elif j-A[i-1]<0:
            G[j] = min(G[j], B[i-1])
        else:
            G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        
print(G[H])

Buggy python submission (verdict: Time Limit Exceeded):
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

for i in range(1,N+1):
    for j in range(1,H+1):
        if i == 1:
            if j-A[i-1]<0:
                G[j] = B[i-1]
            else:
                G[j] = G[j-A[i-1]]+B[i-1]
        elif j-A[i-1]<0:
            G[j] = min(G[j], B[i-1])
        else:
            G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        
print(G[H])

Fixed submission:
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

for i in range(1,N+1):
    for j in range(1,H+1):
        if i == 1:
            if j-A[i-1]<0:
                G[j] = B[i-1]
            else:
                G[j] = G[j-A[i-1]]+B[i-1]
        elif j-A[i-1]<0:
            G[j] = min(G[j], B[i-1])
        else:
            G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        
print(G[H])

Buggy python submission (verdict: Time Limit Exceeded):
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)
G_old = [1000000000]*(H+1)

for i in range(1,N+1):
    for j in range(1,H+1):
        if j-A[i-1]<0:
            G[j] = min(G_old[j], B[i-1])
        else:
            G[j] = min(G_old[j], G[j-A[i-1]]+B[i-1])
        G_old[j] = G[j]

print(G[H])

Fixed submission:
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

for i in range(1,N+1):
    for j in range(1,H+1):
        if i == 1:
            if j-A[i-1]<0:
                G[j] = B[i-1]
            else:
                G[j] = G[j-A[i-1]]+B[i-1]
        elif j-A[i-1]<0:
            G[j] = min(G[j], B[i-1])
        else:
            G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        
print(G[H])

Buggy python submission (verdict: Time Limit Exceeded):
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [[0]*(H+1) for _ in range(N+1)]

for i in range(H+1):
    G[0][i] = 10**9

for i in range(1,N+1):
    for j in range(1,H+1):
        if j-A[i-1]<0:
            G[i][j] = min(G[i -1][j], B[i-1])
        else:
            G[i][j] = min(G[i -1][j], G[i][j-A[i-1]]+B[i-1])

print(G[N][H])

Fixed submission:
H,N = map(int,input().split())
A = []
B = []
for i in range(N):
    a,b =map(int,input().split())
    A.append(a)
    B.append(b)

G = [0]*(H+1)

for i in range(1,N+1):
    for j in range(1,H+1):
        if i == 1:
            if j-A[i-1]<0:
                G[j] = B[i-1]
            else:
                G[j] = G[j-A[i-1]]+B[i-1]
        elif j-A[i-1]<0:
            G[j] = min(G[j], B[i-1])
        else:
            G[j] = min(G[j], G[j-A[i-1]]+B[i-1])
        
print(G[H])