A tennis tournament with n participants is running. The participants are playing by an olympic system, so the winners move on and the losers drop out.

The tournament takes place in the following way (below, m is the number of the participants of the current round):

  * let k be the maximal power of the number 2 such that k ≤ m, 
  * k participants compete in the current round and a half of them passes to the next round, the other m - k participants pass to the next round directly, 
  * when only one participant remains, the tournament finishes. 



Each match requires b bottles of water for each participant and one bottle for the judge. Besides p towels are given to each participant for the whole tournament.

Find the number of bottles and towels needed for the tournament.

Note that it's a tennis tournament so in each match two participants compete (one of them will win and the other will lose).

Input

The only line contains three integers n, b, p (1 ≤ n, b, p ≤ 500) — the number of participants and the parameters described in the problem statement.

Output

Print two integers x and y — the number of bottles and towels need for the tournament.

Examples

Input

5 2 3


Output

20 15


Input

8 2 4


Output

35 32

Note

In the first example will be three rounds:

  1. in the first round will be two matches and for each match 5 bottles of water are needed (two for each of the participants and one for the judge), 
  2. in the second round will be only one match, so we need another 5 bottles of water, 
  3. in the third round will also be only one match, so we need another 5 bottles of water. 



So in total we need 20 bottles of water.

In the second example no participant will move on to some round directly.
//package codes;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;

//import codes.Reference.i;

public class TennisTournament {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
			long a[]=i.la();
			long n=a[0];
			long b=a[1];
			long p =a[2];
			long k=n;
			long m=0,c=0;
			
			int f=0;
			
			if(n==1)
				System.out.println(0+" "+p*n);
			else
			{
				while(k!=1)
				{
					m=k;
					long g = power(k);
					
					if(m==g && f==0)
						f=99;
					c+=(g*b)+g/2;
					k=(g/2)+m-g;
					
					
				}
				
				if(f!=99)
					System.out.println((c+1)+" "+p*n);
				else
					System.out.println((c)+" "+p*n);
			}
			
				
		
	}
	private static long power(long k) {
		// TODO Auto-generated method stub
		for(int j=0;j<k;j++)
		{
			if(Math.pow(2, j)>=k)
				return (long) Math.pow(2, Math.pow(2, j)>k?j-1:j);
		}
		return 0;
	}
	static private class i
	{
		//input taking methods
		static BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
		
		public static String[] sa()
	    {
	    	try {
				return b.readLine().split(" ");
			} catch (IOException e) {
				
				e.printStackTrace();
			}
	    	return null;
	    }
		
		public static long l()
		{
			try {
				return Long.parseLong(b.readLine());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	return 0;
		}
		
		public static String s()
		{
			try {
				return b.readLine();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	return null;
		}
		
		public static long[] la()
		{
			return Arrays.stream(sa()).parallel().mapToLong(Long::parseLong).toArray();
		}
		
		public static ArrayList<Long> lal()
		{
			return (ArrayList<Long>)Arrays.stream(la()).parallel().boxed().collect(Collectors.toList());
		}
		public static StringBuilder so(String a)
		{
			return new StringBuilder(a);
		}

	}
}
