#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define repr(i,n) for(int i=(int)(n-1);i>=0;i--)
#define rep(i,n) repl(i,0,n)
#define each(itr,v) for(auto itr:v)
#define pb(s) push_back(s)
#define all(x) (x).begin(),(x).end()
#define dbg(x) cout << #x" = " << x << endl
#define print(x) cout << x << endl
#define maxch(x,y) x=max(x,y)
#define minch(x,y) x=min(x,y)
#define uni(x) x.erase(unique(all(x)),x.end())
#define exist(x,y) (find(all(x),y)!=x.end())
#define bcnt(x) bitset<32>(x).count()

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;
typedef pair<P, int> PPI;
typedef pair<int, P> PIP;
typedef pair<ll, ll> PL;
typedef pair<P, ll> PPL;
typedef set<int> S;

#define INF INT_MAX/3
#define MAX_N 1000000001

P dp[2][100 * 499 + 1];

int main(){
    cin.sync_with_stdio(false);
    int n;
    while(cin >> n, n) {
        vector<int> p(n);
        rep(i, n) cin >> p[i];

        rep(i, n * 499 + 1) dp[0][i] = dp[1][i] = P(0, INF);
        dp[0][0] = dp[1][0] = P(0, 0);
        rep(i, n) {
            rep(j, n * 499 + 1) dp[(i + 1) % 2][j] = dp[i % 2][j];

            rep(j, n * 499 + 1) {
                if (dp[i % 2][j].se != INF) {
                    int change = (5000 - p[i]) % 1000;
                    if (change >= 500) {
                        if (dp[i % 2][j + change - 500].fi < dp[i % 2][j].fi + 1) {
                            dp[(i + 1) % 2][j + change - 500].fi = dp[i % 2][j].fi + 1;
                            dp[(i + 1) % 2][j + change - 500].se = dp[i % 2][j].se + p[i];
                        } else if (dp[i % 2][j + change - 500].fi == dp[i % 2][j].fi + 1) {
                            if (dp[i % 2][j + change - 500].se > dp[i % 2][j].se + p[i]) {
                                dp[(i + 1) % 2][j + change - 500].se = dp[i % 2][j].se + p[i];
                            }
                        }
                    } else {
                        if (dp[i % 2][j + change].fi < dp[i % 2][j].fi) {
                            dp[(i + 1) % 2][j + change].fi = dp[i % 2][j].fi;
                            dp[(i + 1) % 2][j + change].se = dp[i % 2][j].se + p[i];
                        } else if (dp[i % 2][j + change].fi == dp[i % 2][j].fi) {
                            if (dp[i % 2][j + change].se > dp[i % 2][j].se + p[i]) {
                                dp[(i + 1) % 2][j + change].se = dp[i % 2][j].se + p[i];
                            }
                        }

                        if (j + change >= 500) {
                            if (dp[i % 2][j + change - 500].fi < dp[i % 2][j].fi + 1) {
                                dp[(i + 1) % 2][j + change - 500].fi = dp[i % 2][j].fi + 1;
                                dp[(i + 1) % 2][j + change - 500].se = dp[i % 2][j].se + p[i];
                            } else if (dp[i % 2][j + change - 500].fi == dp[i % 2][j].fi + 1) {
                                if (dp[i % 2][j + change - 500].se > dp[i % 2][j].se + p[i]) {
                                    dp[(i + 1) % 2][j + change - 500].se = dp[i % 2][j].se + p[i];
                                }
                            }
                        }
                    }
                }
            }
        }

        P maxi = P(0, 0);
        rep(i, n * 499 + 1) {
            if (maxi.fi < dp[n % 2][i].fi) maxi = dp[n % 2][i];
            else if (maxi.fi == dp[n % 2][i].fi && maxi.se > dp[n % 2][i].se) maxi = dp[n % 2][i];
        }

        cout << maxi.fi << " " << maxi.se << endl;
    }

    return 0;
}

Measured memory_bytes: 3944