#include <iostream>
#include<cstdio>
#include<string.h>
#include<vector>
using namespace std;
pair<int,int> dp[1200000][20];
int a[20],n;
pair<int,int> f(int mask,int rt)
{
    int i;
    // cout<<mask<<endl;
    if(mask==(1<<n)-1)
    {
        return(make_pair(2*a[rt],1));
    }
    if(dp[mask][rt].first)
    {
        return dp[mask][rt];
    }
    for(i=0; i<n; i++)
    {
        //cout<<(mask&(i<<i));
        if((mask&(1<<i))==0)
        {
            //cout<<1;
            if(a[rt]<a[i])
            {
                pair<int,int> r = f(mask|(1<<i),i);
                if(dp[mask][rt].first<r.first)
                {
                    dp[mask][rt].first=r.first;
                    dp[mask][rt].second=r.second;
                    //dp[mask][rt].second=r.second;
                }
                else if(dp[mask][rt].first==r.first) dp[mask][rt].second+=r.second;
            }
            else
            {
                pair<int,int> r= f(mask|(1<<i),i);
                if(dp[mask][rt].first<r.first+2*(a[rt]-a[i]))
                {
                    dp[mask][rt].first=r.first+2*(a[rt]-a[i]);
                    dp[mask][rt].second=r.second;
                }
                else if(dp[mask][rt].first==r.first+2*(a[rt]-a[i])) dp[mask][rt].second+=r.second;
            }
        }
    }

    return dp[mask][rt];
}
int main()
{
    int ans=0;
    scanf("%d",&n);
    while(n)
    {
        pair<int,int>ans;
        ans=make_pair(0,0);

        int i;
        memset(dp,0,sizeof(dp));
        for(i=0; i<n; i++) scanf("%d",&a[i]);
        for(i=0; i<n; i++)
        {

            pair<int,int> tm=f(1<<i,i);
            if(ans.first<tm.first)
            {
                ans.first=tm.first;
                ans.second=tm.second;
            }
            else if(ans.first==tm.first)
            {
                ans.second+=tm.second;
            }
        }

        printf("%d %d\n",2*n+ans.first,ans.second);
        scanf("%d",&n);
    }
    return 0;
}

