import java.io.*;
import java.util.*;

public class Main{
    
    static int gcd(int x, int y){ 
        if(x==0){ 
            return y;
        }
        return gcd(y%x, x); 
    } 
    
	public static void main(String[] args) throws IOException {
	    Reader.init();
        int N=Reader.nextInt();
        int A[]=new int[N];
        read(A, N);
        
        if(N==2){
            print(1+" "+ Math.abs(A[0]-A[1]));
        }
        else{
            int max=A[0];
            for(int i=1;i<N;i++){
                max=Math.max(A[i], max);
            }
            
            A[0]=max-A[0];
            int res=A[0];
            long z=A[0];
            for(int i=1;i<N;i++){
                A[i]=max-A[i];
                res=gcd(A[i], res);
                z+=A[i];
            }
            
            print(z/res+" "+res);
        }
        
	}

    static int mod=1000000007;
    
    public static void read(int arr[], int N) throws IOException{ for(int i=0;i<N;i++){ arr[i]=Reader.nextInt(); } }
    public static void read(String arr[], int N) throws IOException{ for(int i=0;i<N;i++){ arr[i]=Reader.next(); } }
    
    public static void print(Object O){ System.out.println(O); }
    
    public static void display(int arr[]){ System.out.println(Arrays.toString(arr)); }
    public static void display(int arr[][], int N){ for(int i=0;i<N;i++){ System.out.println(Arrays.toString(arr[i])); } }
}

class Reader {
    static BufferedReader reader;
    static StringTokenizer tokenizer;

    static void init() {
        reader=new BufferedReader(new InputStreamReader(System.in));
        tokenizer=new StringTokenizer("");
    }

    static String next() throws IOException {
        while (!tokenizer.hasMoreTokens() ) {
            tokenizer=new StringTokenizer(reader.readLine());
        }
        return tokenizer.nextToken();
    }

    static int nextInt() throws IOException { return Integer.parseInt(next()); }
    static double nextDouble() throws IOException { return Double.parseDouble(next()); }
    static long nextLong() throws IOException { return Long.parseLong(next()); }
    static String nextLine() throws IOException { return reader.readLine(); }
}