const main = (input) => {
    // 標準入力の末尾などに不要な空白などが入っているときが稀にあ流からtrim
    const args = input.trim().split("\n");
	const N = args[0]
    const As = args[1].trim().split(" ")
    // フラグを初期値空
	let flag = ''
    // Asのどっちかに0が含まれていたらzero
    if (As.includes('0')) { flag = 'zero' }
	let answer = As[0]
 
    // リミットを設定
    const limit = 10 ** 18
	if (flag !== 'zero') {
		let i = 1;
        // ここはnでもいいような気はする
        while (i < As.length) {
			if (answer <= limit) {
                // 数値に変換してi番目を既存のanswerに掛け算して更新
				answer = BigInt(answer) * BigInt(As[i])
                // iを更新　 bitwise or 0.5とかは切り捨てられる
                i = (i + 1) | 0　
                // answerがリミットをオーバーフローしたら中し
                if (answer > limit) {
					flag = 'over'
					break
				}
			}
		}
	}
    // 条件分岐
    switch (flag) {
		case 'zero' :
			console.log(0)
			break
		case 'over':
			console.log(-1)
			break
		default:
            // 文字型に変換して出力
			console.log(answer.toString())
	}
}
 
main(require('fs').readFileSync('/dev/stdin', 'utf8'))