#include <bits/stdc++.h>
template <class T>
bool umax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool umin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
using namespace std;
template <typename T>
T gcd(T a, T b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int findGCD(int arr[], int n) {
  int result = arr[0];
  for (int i = 1; i < n; i++) result = gcd(arr[i], result);
  return result;
}
template <typename T>
T lcm(T m, T n) {
  if ((0 == m) || (0 == n)) return 0;
  return ((m / gcd(m, n)) * n);
}
int main() {
  long long N;
  int rate[10] = {1, 400, 800, 1200, 1600, 2000, 2400, 2800, 3200, 4801};
  bool color[9] = {false};
  int minimum = 0, maximum = 0;
  int gachipro = 0;
  cin >> N;
  vector<int> a(N);
  for (int i = 0; i < N; i++) {
    cin >> a[i];
    for (int j = 0; j < 9; j++) {
      if (rate[j] <= a[i] && a[i] < rate[j + 1]) {
        color[j] = true;
        if (j == 8) gachipro++;
        break;
      }
    }
  }
  for (int i = 0; i < 8; i++) {
    if (color[i]) minimum++;
  }
  maximum = minimum + gachipro;
  cout << minimum << " " << maximum << endl;
  return 0;
}
