#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T bigmod(T p, T e, T M) {
  long long ret = 1;
  for (; e > 0; e >>= 1) {
    if (e & 1) ret = (ret * p) % M;
    p = (p * p) % M;
  }
  return (T)ret;
}
template <class T>
inline T gcd(T a, T b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
template <class T>
inline T lcm(T a, T b) {
  return (a / gcd(a, b)) * b;
}
template <class T>
inline T modinverse(T a, T M) {
  return bigmod(a, M - 2, M);
}
template <class T>
inline T bpow(T p, T e) {
  long long ret = 1;
  for (; e > 0; e >>= 1) {
    if (e & 1) ret = (ret * p);
    p = (p * p);
  }
  return (T)ret;
}
struct data {
  int el1, el2, el3;
  data() {}
  data(int a, int b, int c) { el1 = a, el2 = b, el3 = c; }
  bool friend operator<(data a, data b) { return a.el1 > b.el1; }
};
int n, m, k;
long long N, M, K;
int co[100];
int a[1005];
int main() {
  int t, tc = 1;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  for (int i = 1; i <= n; i++) {
    if (a[i] >= 1 && a[i] <= 399) {
      co[1] = 1;
    } else if (a[i] >= 400 && a[i] <= 799) {
      co[2] = 1;
    } else if (a[i] >= 800 && a[i] <= 1199) {
      co[3] = 1;
    } else if (a[i] >= 1200 && a[i] <= 1599) {
      co[4] = 1;
    } else if (a[i] >= 1600 && a[i] <= 1999) {
      co[5] = 1;
    } else if (a[i] >= 2000 && a[i] <= 2399) {
      co[6] = 1;
    } else if (a[i] >= 2400 && a[i] <= 2799) {
      co[7] = 1;
    } else if (a[i] >= 2800 && a[i] <= 3199) {
      co[8] = 1;
    } else {
      co[9]++;
    }
  }
  int mn = 0, mx = 0;
  for (int i = 1; i <= 8; i++) {
    mn += co[i];
  }
  mx = mn + co[9];
  printf("%d %d\n", mn, mx);
  return 0;
}
