Go: package main

import "fmt"

func main() {
    var n int
    a := make([]float64, 10004)
    for {
        fmt.Scan(&n)
        if n == 0 { break }

        ave_num := 0.0
        for i := 0; i < n; i++ {
            fmt.Scan(&a[i])
            ave_num += a[i]
        }
        ave_num /= float64(n)
        cnt := 0
        for i := 0; i < n; i++ {
            if a[i] <= ave_num {
                cnt++
            }
        }
        fmt.Println(cnt)
    }
}

C++: //https://onlinejudge.u-aizu.ac.jp/challenges/sources/ICPC/Prelim/1624?year=2018

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;

    while (cin >> n, n) {
        vector<int> a(n);
        int sum = 0;
        for (int i = 0; i < n; ++i) {
            int t;
            cin >> t;
            sum += t;
            a[i] = t * n;
        }
        sort(a.begin(), a.end());

        cout << upper_bound(a.begin(), a.end(), sum) - a.begin() << endl;
    }

    return 0;
}

/*
 * 除算による誤差が怖いので，a[i]<=S/nのかわりに
 * n*a[i]<=Sを調べた。
 * 
 */

C++: #include<vector>
#include<iostream>

using namespace std;

int main() {
  int n;

  cin >> n;
  while(n != 0) {
    vector<int> data;
    for(int i = 0; i < n; i++) {
      int x;
      cin >> x;
      data.push_back(x);
    }


    int sum = 0;
    for(int i = 0; i < data.size(); i++) {
      sum += data.at(i);
    }
    double ave = sum / data.size();

    int cnt = 0;
    for(int i = 0; i < data.size(); i++) {
      if(ave >= data.at(i)) {
        cnt++;
      }
    }

    cout << cnt << endl;
    cin >> n;
  }
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <queue>
#include <deque>
#include <bitset>
#include <iterator>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <functional>
#include <numeric>
#include <utility>
#include <limits>
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector<ll> vec;
typedef vector<vec> vec2;
typedef map<ll,ll> MPll;
typedef set<ll> setl;

const ll INF = 1ll << 60;
const ld EPS = 1e-10;
const int dx[4] = {1,0,-1,0};
const int dy[4] = {0,1,0,-1};
const ll mods = 1000000007;

//for文
#define FOR(i,a,b) for(ll i = (ll)a;i < (ll)b;i++)
#define FORE(i,a,b) for(ll i = (ll) a;i <= (ll) b;i++ )
#define REP(i,size)  for(ll i =(ll)0;i<size;i++)
#define REPE(i,size)  for(ll i =(ll)0;i<=size;i++)
#define REPR(i,size)  for(ll i =(ll)size;i>=0;i--)
#define FOREACH(it, vec) for (auto it = vec.begin(); it != vec.end(); it++)

//ソート
#define ALL(vec) (vec).begin(),(vec).end()
#define SORT(vec) sort(ALL(vec))
#define SORTA(arr) sort(arr,arr + (sizeof(arr) / sizeof(ll)))
#define INVSORT(vec) sort((vec).rbegin(),(vec).rend())
#define REV(vec) reverse(ALL(vec))
#define REVA(arr) reverse(arr,arr + (sizeof(arr) / sizeof(ll)))
#define INVSORTA(arr) sort(arr,arr + (sizeof(arr) / sizeof(ll))),REVA(arr)

//最大値最小値
#define MAX(vec) *max_element(ALL(vec))
#define UNIQ(vec) SORT(vec);vec.erase(unique(ALL(vec)),vec.end())
#define MIN(vec) *min_element(ALL(vec))

//出力
#define printl(a) cout << a << "\n"
#define print(a) cout << a
#define OUT(a) printf("%lld\n",a)
#define OUTA(array) REP(i,sizeof(array)/sizeof(ll)) printf("%lld\n",array[i])
#define OUTV(vec) REP(i,vec.size()) printf("%lld\n",vec[i])
#define SP printf(" ")

//入力
#define IN(x) scanf("%lld",&x)
#define INV(vec) REP(i,vec.size()) scanf("%lld",&vec[i])
#define INA(array) REP(i,sizeof(array)/sizeof(ll)) scanf("%lld",array + i)
#define INS(x) cin >> x
#define INCH(x) scanf(" %c",&x)

//型
#define P pair
#define vp vector<P>
#define F first
#define S second

//その他
#define PB push_back
#define MP make_pair
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,-1,sizeof(a))
#define INFI(a) memset(a,INF,sizeof(a))
#define MEM(a,b) memset(a,(b),sizeof(a))

//関数
template<class T> inline void amax(T &a,const T &b) { if(a < b) a = b; }
template<class T> inline void amin(T &a, const T &b) { if(a > b) a = b; }
/*
struct structure{
    ll num1,num2,string s;
    bool operator<(const rest &another) const{
        return this->s < another.s;
    }
    structure(ll a,ll b,string s){
        this->num1 = a,this->num2=b,this->s=s;
    }
};a
*/
//特殊
//#define int ll
#define _CRT_SECURE_NO_WARNINGS



/*
template <typename T>
struct UnionFindTree{

    vector<T> par;

    UnionFindTree(T n) : par(n+1){
        for (int i = 1; i <= n; ++i) {
            par[i] = i;
        }
    }

    T root(T x){
        if(par[x] == x) return x;
        else  return par[x] = root(par[x]);
    }

    void unite(T x,T y){
        if(!same(x,y)) par[root(x)] = root(par[y]);
    }

    T same(T x,T y){
        return root(x) == root(y);
    }

};
*/

#define DEBUG

#ifdef DEBUG
#define debugl(x) cerr << #x << ":" << x<<"\n"
    #define debug(x)  cerr << #x<<":"<<x<<endl;
    #define  debugV(V) REP(i,V.size()){cerr << i << ":" << V[i]<<endl;}
    #define  debugA(A) REP(i,sizeof(A)/sizeof(ll)){cerr << i << ":" << V[i]<<endl;}
#else
#define debug(x)
#define debugV(x)
#define debugA(x)
#define debugl(x)
#endif

#define ZERO(a) memset(a,0,sizeof(a))
#define ALL(vec) (vec).begin(),(vec).end()
#define SORT(vec) sort(ALL(vec))



/*
ll binary(ll key,vec &a){
    ll ok = a.size();ll dame = -1;
    while(abs(ok - dame) > 1){
        ll mid = (ok + dame) /2;
        if(a[mid] <= key) ok = mid;
        else dame = mid;
    }

    return ok;
}
*/

ll n;
ll m;
ll k;
ll l;
ll temp;

signed main(){
    while(true) {
        IN(n);
        if(n==0) return 0;
        vec a(n);
        ll sum = 0;
        FOR(i, 0, n) {
            IN(a[i]);
            sum += a[i];
        }
        SORT(a);
        ll avg = sum / n;
        ll ans = 0;
        FOR(i, 0, n) {
            if (a[i] <= avg) ans++;
            else break;
        }

        OUT(ans);
    }
}

C++: #include <iostream>
using namespace std;
int main(void){
    // Your code here!
    int n;
   int shotoku[10000];
   while(cin >> n){
       int sum=0;
       int s=0;
       if(n==0)break;
           for(int i=0; i<n; i++){
               cin >> shotoku[i];
                   sum += shotoku[i];
           }
       int x=sum/n;
       for(int j=0; j<n; j++){
           if(shotoku[j]<=x)
               s = s + 1;
       }
       cout << s << endl;
   }
}

C++: #include<bits/stdc++.h>
using namespace std;
using Int = long long;
signed main(){
  Int n;
  while(cin>>n,n){
    vector<Int> a(n);
    for(Int i=0;i<n;i++) cin>>a[i];
    Int s=0;
    for(Int i=0;i<n;i++) s+=a[i];
    Int cnt=0;
    for(Int i=0;i<n;i++){
      if(a[i]*n<=s) cnt++;
    }
    cout<<cnt<<endl;
  }
  return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int n;
int nums[10000+10];
LL sum;

int main()
{
	while(~scanf("%d", &n))
	{
		if(!n)
			break;
		sum = 0;
		for(int i = 0; i < n; i++)
		{
			int tmp;
			scanf("%d", &nums[i]);
			sum += nums[i];
		}
		sum /= n;
		int ans = 0;
		for(int i = 0; i < n; i++)
		{
			if(nums[i] <= sum)
				ans++;
		}
		printf("%d\n", ans);
	}
	return 0;
}

C++: #include "bits/stdc++.h"

#define REP(i, n ,N) for(ll i = (n); i < (N); i++)
#define p(s) cout<<(s)<<endl
#define p2(a, b) cout<<(a)<<" "<<(b)<<endl
using namespace std;
typedef long long ll;
ll MOD = 1e9+7;
ll inf = 1e18;

ll n, m;
ll a[10101];

int main(){
	while(cin >> n && n > 0){
		ll ans = 0;
		ll sum = 0;
		REP(i,0,n){
			cin >> a[i];
			sum += a[i];
		}
		REP(i,0,n){
			if(a[i] * n <= sum){
				ans++;
			}
		}
		p(ans);
	}

	return 0;
}