import java.math.BigInteger;
import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ


	    //入力数字の数を入力
		Scanner sc=new Scanner(System.in);

	    int count=sc.nextInt();

		boolean isOverflow = false;  // 桁あふれしたかフラグ
		BigInteger result=BigInteger.ZERO;
		BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18));

	    //入力処理
		for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		}

		// 結果を出力する
		if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		}
	}
} import java.math.BigInteger; BigInteger java.math import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ


	    //入力数字の数を入力
		Scanner sc=new Scanner(System.in);

	    int count=sc.nextInt();

		boolean isOverflow = false;  // 桁あふれしたかフラグ
		BigInteger result=BigInteger.ZERO;
		BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18));

	    //入力処理
		for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		}

		// 結果を出力する
		if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		}
	}
} Main public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ


	    //入力数字の数を入力
		Scanner sc=new Scanner(System.in);

	    int count=sc.nextInt();

		boolean isOverflow = false;  // 桁あふれしたかフラグ
		BigInteger result=BigInteger.ZERO;
		BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18));

	    //入力処理
		for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		}

		// 結果を出力する
		if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		}
	} main {
		// TODO 自動生成されたメソッド・スタブ


	    //入力数字の数を入力
		Scanner sc=new Scanner(System.in);

	    int count=sc.nextInt();

		boolean isOverflow = false;  // 桁あふれしたかフラグ
		BigInteger result=BigInteger.ZERO;
		BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18));

	    //入力処理
		for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		}

		// 結果を出力する
		if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		}
	} Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int count=sc.nextInt(); count sc.nextInt() sc.nextInt sc boolean isOverflow = false; isOverflow false BigInteger result=BigInteger.ZERO; result BigInteger.ZERO BigInteger BigInteger.ZERO BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18)); max BigInteger.valueOf((long)Math.pow(10, 18)) BigInteger.valueOf BigInteger (long)Math.pow(10, 18) Math.pow Math 10 18 for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		} int i = 0; int i = 0; i 0 i < count i count i++ i++ i {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		} {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		} long a = sc.nextLong(); a sc.nextLong() sc.nextLong sc if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			} isOverflow {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			} if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				} a == (long)0 a (long)0 {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				} result = BigInteger.ZERO result BigInteger.ZERO BigInteger BigInteger.ZERO isOverflow = false isOverflow false break; continue; BigInteger nyuryoku=BigInteger.valueOf(a); nyuryoku BigInteger.valueOf(a) BigInteger.valueOf BigInteger a result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku) result i==0 ? result.add(nyuryoku):result.multiply(nyuryoku) i==0 i 0 result.add(nyuryoku) result.add result nyuryoku result.multiply(nyuryoku) result.multiply result nyuryoku if (result.compareTo(max) > 0) {
				isOverflow = true;
			} result.compareTo(max) > 0 result.compareTo(max) result.compareTo result max 0 {
				isOverflow = true;
			} isOverflow = true isOverflow true if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		} isOverflow {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} System.out.println(-1) System.out.println System.out System System.out -1 1 {
			System.out.println(result);
		} System.out.println(result) System.out.println System.out System System.out result String[] args args public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ


	    //入力数字の数を入力
		Scanner sc=new Scanner(System.in);

	    int count=sc.nextInt();

		boolean isOverflow = false;  // 桁あふれしたかフラグ
		BigInteger result=BigInteger.ZERO;
		BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18));

	    //入力処理
		for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		}

		// 結果を出力する
		if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		}
	}
} public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ


	    //入力数字の数を入力
		Scanner sc=new Scanner(System.in);

	    int count=sc.nextInt();

		boolean isOverflow = false;  // 桁あふれしたかフラグ
		BigInteger result=BigInteger.ZERO;
		BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18));

	    //入力処理
		for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		}

		// 結果を出力する
		if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		}
	}
} Main
import java.math.BigInteger;
import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ


	    //入力数字の数を入力
		Scanner sc=new Scanner(System.in);

	    int count=sc.nextInt();

		boolean isOverflow = false;  // 桁あふれしたかフラグ
		BigInteger result=BigInteger.ZERO;
		BigInteger max=BigInteger.valueOf((long)Math.pow(10, 18));

	    //入力処理
		for(int i = 0; i < count; i++) {
			long a = sc.nextLong();

			// 桁あふれしている時は、それ以降ゼロが現れるかチェックする
			if (isOverflow) {
				// 桁あふれ後にゼロが出てきたとき
				if (a == (long)0) {
					// 求める値はゼロになる
					result = BigInteger.ZERO;
					isOverflow = false;
					break;
				}
				// 次の値を処理する
				continue;
			}

			// 積を求める
			BigInteger nyuryoku=BigInteger.valueOf(a);
			result= i==0 ? result.add(nyuryoku):result.multiply(nyuryoku);
			// 桁あふれしているか？
			if (result.compareTo(max) > 0) {
				isOverflow = true;
			}
		}

		// 結果を出力する
		if(isOverflow) {
			// 桁あふれ時は「-1」
			System.out.println(-1);
		} else {
			System.out.println(result);
		}
	}
}
