// competitive-verifier: PROBLEM https://atcoder.jp/contests/abc169/tasks/abc169_b
// competitive-verifier: IGNORE
// AtCoder's test cases are now private.
#include "Math/is_multiplication_overflow.hpp"
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long N;
cin >> N;
vector<long long> A(N);
for (int i = 0; i < N; i++)
{
cin >> A[i];
}
sort(A.begin(), A.end());
long long LIMIT = 1000000000000000000;
long long ans = 1;
for (int i = 0; i < N; i++)
{
if (!is_multiplication_overflow(ans, A[i], LIMIT))
{
ans = ans * A[i];
}
else
{
ans = -1;
break;
}
}
cout << ans << endl;
return 0;
}
#line 1 "test/Math/is_multiplication_overflow/abc169-b.test.cpp"
// competitive-verifier: PROBLEM https://atcoder.jp/contests/abc169/tasks/abc169_b
// competitive-verifier: IGNORE
// AtCoder's test cases are now private.
#line 1 "Math/is_multiplication_overflow.hpp"
bool is_multiplication_overflow(long long a, long long b, long long limit)
{
return a == 0 ? false : (limit / a) < b;
}
#line 6 "test/Math/is_multiplication_overflow/abc169-b.test.cpp"
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long N;
cin >> N;
vector<long long> A(N);
for (int i = 0; i < N; i++)
{
cin >> A[i];
}
sort(A.begin(), A.end());
long long LIMIT = 1000000000000000000;
long long ans = 1;
for (int i = 0; i < N; i++)
{
if (!is_multiplication_overflow(ans, A[i], LIMIT))
{
ans = ans * A[i];
}
else
{
ans = -1;
break;
}
}
cout << ans << endl;
return 0;
}