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 n = sc.nextInt();
		BigInteger ans = BigInteger.ONE;
		
		BigInteger border = BigInteger.ONE;
		for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		}
		
		boolean overFlg = false;
		for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		}
		
		System.out.println(ans);
	}
} 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 n = sc.nextInt();
		BigInteger ans = BigInteger.ONE;
		
		BigInteger border = BigInteger.ONE;
		for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		}
		
		boolean overFlg = false;
		for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		}
		
		System.out.println(ans);
	}
} Main public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		BigInteger ans = BigInteger.ONE;
		
		BigInteger border = BigInteger.ONE;
		for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		}
		
		boolean overFlg = false;
		for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		}
		
		System.out.println(ans);
	} main {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		BigInteger ans = BigInteger.ONE;
		
		BigInteger border = BigInteger.ONE;
		for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		}
		
		boolean overFlg = false;
		for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		}
		
		System.out.println(ans);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc BigInteger ans = BigInteger.ONE; ans BigInteger.ONE BigInteger BigInteger.ONE BigInteger border = BigInteger.ONE; border BigInteger.ONE BigInteger BigInteger.ONE for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		} int i = 0; int i = 0; i 0 i < 18 i 18 i++ i++ i {
			border = border.multiply(BigInteger.valueOf(10));
		} {
			border = border.multiply(BigInteger.valueOf(10));
		} border = border.multiply(BigInteger.valueOf(10)) border border.multiply(BigInteger.valueOf(10)) border.multiply border BigInteger.valueOf(10) BigInteger.valueOf BigInteger 10 boolean overFlg = false; overFlg false for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		} {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		} if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			} overFlg {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				} BigInteger.ZERO.equals(new BigInteger(sc.next())) BigInteger.ZERO.equals BigInteger.ZERO BigInteger BigInteger.ZERO new BigInteger(sc.next()) {
					ans = BigInteger.ZERO;
					break;
				} ans = BigInteger.ZERO ans BigInteger.ZERO BigInteger BigInteger.ZERO break; {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			} ans = ans.multiply(new BigInteger(sc.next())) ans ans.multiply(new BigInteger(sc.next())) ans.multiply ans new BigInteger(sc.next()) if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				} ans.equals(BigInteger.ZERO) ans.equals ans BigInteger.ZERO BigInteger BigInteger.ZERO {
					// 0終了
					break;
				} break; if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				} ans.compareTo(border) > 0 ans.compareTo(border) ans.compareTo ans border 0 {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				} ans = BigInteger.valueOf(-1) ans BigInteger.valueOf(-1) BigInteger.valueOf BigInteger -1 1 overFlg = true overFlg true System.out.println(ans) System.out.println System.out System System.out ans String[] args args public class Main {
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		BigInteger ans = BigInteger.ONE;
		
		BigInteger border = BigInteger.ONE;
		for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		}
		
		boolean overFlg = false;
		for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		}
		
		System.out.println(ans);
	}
} public class Main {
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		BigInteger ans = BigInteger.ONE;
		
		BigInteger border = BigInteger.ONE;
		for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		}
		
		boolean overFlg = false;
		for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		}
		
		System.out.println(ans);
	}
} 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 n = sc.nextInt();
		BigInteger ans = BigInteger.ONE;
		
		BigInteger border = BigInteger.ONE;
		for (int i = 0; i < 18; i++) {
			border = border.multiply(BigInteger.valueOf(10));
		}
		
		boolean overFlg = false;
		for (int i = 0; i < n; i++) {
			if (overFlg) {
				// 0かだけチェック
				if (BigInteger.ZERO.equals(new BigInteger(sc.next()))) {
					ans = BigInteger.ZERO;
					break;
				}
			} else {
				// ボーダー以下
				ans = ans.multiply(new BigInteger(sc.next()));
				if (ans.equals(BigInteger.ZERO)) {
					// 0終了
					break;
				}
				if (ans.compareTo(border) > 0) {
					// ボーダー越え
					ans = BigInteger.valueOf(-1);
					overFlg = true;
				}
			}
		}
		
		System.out.println(ans);
	}
}
