import java.util.Scanner;


public class cf {
	static long maxx(long a,long b){
		if(a > b)return a;
		else return b;
	}

	static long Quick_GCD(long a,long b)
	{
	    if(a==0) return b;
	    if(b==0) return a;
	    if(!(a%2==1)&&!(b%2==1))
	    {
	        return Quick_GCD(a>>1,b>>1)<<1;
	    }
	    else if(!(b%2==1))
	    {
	        return Quick_GCD(a,b>>1);
	    }
	    else if(!(a%2==1))
	    {
	        return Quick_GCD(a>>1,b);
	    }
	    else
	    {
	        return Quick_GCD(Math.abs(a-b),Math.min(a,b));
	    }
	}
	  
	public static void main(String args[]) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		long gc = 0,gc2 = 0;
		long ma = 0,ans1 = 0;
		long a[] = new long [1000005];
		long b[] = new long [1000005];
		for(int i = 1; i <= n; i++){
			a[i] = s.nextInt();
			gc = Quick_GCD(gc,a[i]);
		}
		for(int i = 1; i <= n; i++){
			if(a[i] % gc != 0){
				long tnt = ((a[i]/gc) + 1)*gc;
				ma = maxx(ma,tnt);
			}
			ma = maxx(ma,a[i]);
		}
		for(int i = 1; i <= n; i++){
			b[i] = ma - a[i];
			gc2 = Quick_GCD(gc2,b[i]);
		}
		for(int i = 1; i <= n; i++){
			ans1 += (b[i] / gc2);
		}
		System.out.print(ans1);
		System.out.print(" ");
		System.out.println(gc2);
			
	}
}

