#include <stdlib.h>
#include <stdio.h>
#include <memory.h>

using namespace std;

const int maxN = 100100;
const int maxD = 410;
const int c = 205;
const int minBesk = -1000000000;

int a[maxN];
int n;

int up[maxN][maxD];
int down[maxN][maxD];


void ucitajPodatke() {
    freopen("prevara.in", "r", stdin);
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", &(a[i]));
}

int fmax(int a, int b) {
    return (a > b) ? a : b;
}

void resi() {
    memset(up, 0, sizeof(up));
	memset(down, 0, sizeof(down));

    for (int j = 0; j < maxD; j++)
        up[n][j] = j;
    for (int i = n - 1; i >= 0; i--)
        for (int j = 0; j < maxD; j++)
            if (j <= c)
                up[i][j] = up[i + 1][j + a[i]];
            else
                up[i][j] = up[i + 1][j - a[i]];
    for (int j = 0; j < maxD; j++)
        down[0][j] = j;
    for (int i = 1; i <= n; i++)
        for (int j = 0; j < maxD; j++) {
            if (down[i - 1][j] <= c)
                down[i][j] = down[i - 1][j] + a[i - 1];
            else
                down[i][j] = down[i - 1][j] - a[i - 1];
        }
}

void sacuvajResenje() {
    int sumaSvih = 0;
    for (int i = 0; i < n; i++)
        sumaSvih += a[i];

    int total = 0, max = -500;
    for (int i = 0; i < n; i++) {
        int td = down[i][up[i][c]] - c;
        int vrednost = (sumaSvih - td) / 2 + td;
        if (vrednost > max) {
           max = vrednost;
           total = 1;
        } else if (max == vrednost) total++;
    }
    freopen("prevara.out", "w", stdout);
    printf("%d %d\n", max, total);
}

int main() {
    ucitajPodatke();
    resi();
    sacuvajResenje();
    return 0;
}
