
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] a) throws IOException{

		String strLine ="";
		BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in));

		int i = 0;
		int max = 50;
		int[] tempInt = new int[2];

		while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		}

	}

} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {

	public static void main(String[] a) throws IOException{

		String strLine ="";
		BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in));

		int i = 0;
		int max = 50;
		int[] tempInt = new int[2];

		while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		}

	}

} Main public static void main(String[] a) throws IOException{

		String strLine ="";
		BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in));

		int i = 0;
		int max = 50;
		int[] tempInt = new int[2];

		while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		}

	} main {

		String strLine ="";
		BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in));

		int i = 0;
		int max = 50;
		int[] tempInt = new int[2];

		while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		}

	} String strLine =""; strLine "" BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in)); stdReader new BufferedReader(new InputStreamReader(System.in)) int i = 0; i 0 int max = 50; max 50 int[] tempInt = new int[2]; tempInt new int[2] 2 while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		} i <= max && ((strLine = stdReader.readLine()) != null) i <= max i max ((strLine = stdReader.readLine()) != null) (strLine = stdReader.readLine()) strLine stdReader.readLine() stdReader.readLine stdReader null {


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		} String[] temp = strLine.split(" ",-10); temp strLine.split(" ",-10) strLine.split strLine " " -10 10 tempInt[0] =Integer.parseInt(temp[0]) tempInt[0] tempInt 0 Integer.parseInt(temp[0]) Integer.parseInt Integer temp[0] temp 0 tempInt[1] = Integer.parseInt(temp[1]) tempInt[1] tempInt 1 Integer.parseInt(temp[1]) Integer.parseInt Integer temp[1] temp 1 int maxYakusu = 1; maxYakusu 1 for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				} int k = tempInt[1]-1 ; int k = tempInt[1]-1 ; k tempInt[1]-1 tempInt[1] tempInt 1 1 k > 1 k 1 k-- k-- k {

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				} {

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				} if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					} (tempInt[0]%k == 0)&&(tempInt[1]%k == 0) (tempInt[0]%k == 0) tempInt[0]%k tempInt[0] tempInt 0 k 0 (tempInt[1]%k == 0) tempInt[1]%k tempInt[1] tempInt 1 k 0 {
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					} tempInt[0] = tempInt[0]/k tempInt[0] tempInt 0 tempInt[0]/k tempInt[0] tempInt 0 k tempInt[1] = tempInt[1]/k tempInt[1] tempInt 1 tempInt[1]/k tempInt[1] tempInt 1 k maxYakusu = maxYakusu * k maxYakusu maxYakusu * k maxYakusu k int maxBaisu = maxYakusu * tempInt[0] * tempInt[1]; maxBaisu maxYakusu * tempInt[0] * tempInt[1] maxYakusu * tempInt[0] * tempInt[1] maxYakusu tempInt[0] tempInt 0 tempInt[1] tempInt 1 System.out.println(maxYakusu+" "+maxBaisu) System.out.println System.out System System.out maxYakusu+" "+maxBaisu maxYakusu+" "+maxBaisu maxYakusu " " maxBaisu i++ i String[] a a public class Main {

	public static void main(String[] a) throws IOException{

		String strLine ="";
		BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in));

		int i = 0;
		int max = 50;
		int[] tempInt = new int[2];

		while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		}

	}

} public class Main {

	public static void main(String[] a) throws IOException{

		String strLine ="";
		BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in));

		int i = 0;
		int max = 50;
		int[] tempInt = new int[2];

		while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		}

	}

} Main

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] a) throws IOException{

		String strLine ="";
		BufferedReader stdReader =
				new BufferedReader(new InputStreamReader(System.in));

		int i = 0;
		int max = 50;
		int[] tempInt = new int[2];

		while ( i <= max && ((strLine = stdReader.readLine()) != null) ){


				//??????????????§?????????
				String[] temp = strLine.split(" ",-10);
				tempInt[0] =Integer.parseInt(temp[0]);
				tempInt[1] = Integer.parseInt(temp[1]);

				int maxYakusu = 1;

				for(int k = tempInt[1]-1 ; k > 1 ; k--){

					if((tempInt[0]%k == 0)&&(tempInt[1]%k == 0)){
						tempInt[0] = tempInt[0]/k;
						tempInt[1] = tempInt[1]/k;
						maxYakusu = maxYakusu * k;


					}

				}


				//????°???¬?????°????±????????????????????´???????
				int maxBaisu = maxYakusu * tempInt[0] * tempInt[1];

				System.out.println(maxYakusu+" "+maxBaisu);
				i++;
		}

	}

}