An adult game master and N children are playing a game on an ice rink. The game consists of K rounds. In the i-th round, the game master announces:

* Form groups consisting of A_i children each!



Then the children who are still in the game form as many groups of A_i children as possible. One child may belong to at most one group. Those who are left without a group leave the game. The others proceed to the next round. Note that it's possible that nobody leaves the game in some round.

In the end, after the K-th round, there are exactly two children left, and they are declared the winners.

You have heard the values of A_1, A_2, ..., A_K. You don't know N, but you want to estimate it.

Find the smallest and the largest possible number of children in the game before the start, or determine that no valid values of N exist.

Constraints

* 1 \leq K \leq 10^5
* 2 \leq A_i \leq 10^9
* All input values are integers.

Input

Input is given from Standard Input in the following format:


K
A_1 A_2 ... A_K


Output

Print two integers representing the smallest and the largest possible value of N, respectively, or a single integer -1 if the described situation is impossible.

Examples

Input

4
3 4 3 2


Output

6 8


Input

5
3 4 100 3 2


Output

-1


Input

10
2 2 2 2 2 2 2 2 2 2


Output

2 3
/*
 * スケートリンクで、一人の大人の司会と N 人の子供がゲームを行います。 ゲームは K ラウンドからなり、ラウンド i では司会が次のように言います。
 * 
 *     Ai 人組を作って！
 * 
 * すると、まだ脱落していない子供たちは Ai 人からなるグループをできるだけ多く組みます。 一人につき一つのグループにしか入れません。 グループに入れなかった子供たちは脱落し、その他は次のラウンドに進みます。 
 * ラウンドで誰も脱落しないこともありえます。
 * 
 * 最後まで、つまりラウンド K のあとまで残ったのは 2 人で、彼らが勝者となりました。
 * 
 * あなたは A1, A2, ..., AK の値を聞き、N の値は知りませんが、推定してみたくなりました。
 * 
 * ゲームの開始前にいた子供たちの人数として考えられる最小の値と、最大の値を求めてください。もしくは、考えられる N の値は存在しないと判定してください。
 */

import java.util.*;
	public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            //入力
            int k = Integer.parseInt(sc.next());
            int[] ak = new int[k];
            
            for(int i=0; i<k; i++){
            	ak[i] = Integer.parseInt(sc.next());
            }
            sc.close();
            
            long min = 2;
            long max = 3;
            for(int i=k-1; i>=0; i--){
            	if((max-1)/ak[i] <= (min-1)/ak[i]){
            		System.out.println(-1);
            		return;
            	}
            	min = ak[i] * ((min-1)/ak[i] + 1);
            	max = ak[i] * ((max-1)/ak[i] + 1);
            }
            
            //出力
            System.out.println(min + " " + (max-1));
        }
    }
	