void main(){
	long n = _scan!long();
	long[] a = _scanln!long();

	// 要素に0がある場合
	if( a.count(0) != 0 ){
		writeln(0);
		return;
	}
	// 桁あふれが起きないかチェックしならが積をとる
	long mula = 1;
	foreach(elm; a){
		if( mula <= mula*elm && mula <= 10L^^18/elm ) mula *= elm;
		else {
			writeln(-1);
			return;
		}	
	}
	mula.writeln();
}
import std.stdio, std.conv, std.algorithm, std.numeric, std.string, std.math;

// 1要素のみの入力
T _scan(T= int)(){
	return to!(T)( readln().chomp() );
}

// 1行に同一型の複数入力
T[] _scanln(T = int)(){
	T[] ln;
	foreach(string elm; readln().chomp().split()){
		ln ~= elm.to!T();
	}
	return ln;
}
