Buggy python submission (verdict: Runtime Error):
N = int(input())
A = list(input().split())

A = sorted(A)
result = 1
max = 10**18
for a in A:
    result *= a
    if result > max:
        print(-1)
        break
    else:
        print(result)

Fixed submission:
n=int(input())
arr=list(map(int,input().split()))
arr=sorted(arr) #配列を昇順ソートしておく(配列に0がある場合0が先頭に来るので、場合分けの必要がなくなる)
ans=1
for val in arr:
 ans*=val #Pythonは多倍長整数をサポートしているので単に積を求めれば十分
 if ans>10**18:
   print(-1)
   break
else:
 print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
import operator
from functools import reduce

N = int(input())
A = input().split()

length = len(A)

list = []

for num in range(length):
    list.append(int(A[num]))

result = reduce(operator.mul, list, 1)

max = 10**18

if result <= max:
    print(result)
else:
    print("-1")

Fixed submission:
n=int(input())
arr=list(map(int,input().split()))
arr=sorted(arr) #配列を昇順ソートしておく(配列に0がある場合0が先頭に来るので、場合分けの必要がなくなる)
ans=1
for val in arr:
 ans*=val #Pythonは多倍長整数をサポートしているので単に積を求めれば十分
 if ans>10**18:
   print(-1)
   break
else:
 print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
A = input().split()

result = 1
length = len(A)

for num in range(length):
    result = result * int(A[num])

max = 1000000000000000000;

if result <= max:
    print(result)
else:
    print("-1")

Fixed submission:
n=int(input())
arr=list(map(int,input().split()))
arr=sorted(arr) #配列を昇順ソートしておく(配列に0がある場合0が先頭に来るので、場合分けの必要がなくなる)
ans=1
for val in arr:
 ans*=val #Pythonは多倍長整数をサポートしているので単に積を求めれば十分
 if ans>10**18:
   print(-1)
   break
else:
 print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
A = input().split()

result = 1
length = len(A)

for num in range(length):
    result = result * int(A[num])

max = 10 ** 18

if result <= max:
    print(result)
else:
    print("-1")

Fixed submission:
n=int(input())
arr=list(map(int,input().split()))
arr=sorted(arr) #配列を昇順ソートしておく(配列に0がある場合0が先頭に来るので、場合分けの必要がなくなる)
ans=1
for val in arr:
 ans*=val #Pythonは多倍長整数をサポートしているので単に積を求めれば十分
 if ans>10**18:
   print(-1)
   break
else:
 print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
A = input().split()

result = 1
length = len(A)

for num in range(length):
    result = result * int(A[num])

if result <= 10 ** 18:
    print(result)
else:
    print("-1")

Fixed submission:
n=int(input())
arr=list(map(int,input().split()))
arr=sorted(arr) #配列を昇順ソートしておく(配列に0がある場合0が先頭に来るので、場合分けの必要がなくなる)
ans=1
for val in arr:
 ans*=val #Pythonは多倍長整数をサポートしているので単に積を求めれば十分
 if ans>10**18:
   print(-1)
   break
else:
 print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
A = input().split()

result = 1

for num in range(N):
    result = result * int(A[num])

if result <= 10 ** 18:
    print(result)
else:
    print("-1")

Fixed submission:
n=int(input())
arr=list(map(int,input().split()))
arr=sorted(arr) #配列を昇順ソートしておく(配列に0がある場合0が先頭に来るので、場合分けの必要がなくなる)
ans=1
for val in arr:
 ans*=val #Pythonは多倍長整数をサポートしているので単に積を求めれば十分
 if ans>10**18:
   print(-1)
   break
else:
 print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
A = input().split()

result = 1

for num in range(N):
    result = result * int(A[num])

if result <= 10 ** 18:
    print(result)
else:
    print("-1")

Fixed submission:
n=int(input())
arr=list(map(int,input().split()))
arr=sorted(arr) #配列を昇順ソートしておく(配列に0がある場合0が先頭に来るので、場合分けの必要がなくなる)
ans=1
for val in arr:
 ans*=val #Pythonは多倍長整数をサポートしているので単に積を求めれば十分
 if ans>10**18:
   print(-1)
   break
else:
 print(ans)