#include <bits/stdc++.h>
using namespace std;
long long n, h[100005];
long long dp[100005];
int GCD(int a, int b) { return b ? GCD(b, a % b) : a; }
stack<long long> sta;
queue<long long> que;
deque<long long> dque;
set<string> s_set;
int vis[200001];
int gcd(int x, int y) { return y ? gcd(y, x % y) : x; }
int lcm(int x, int y) { return x / gcd(x, y) * y; }
int gcd(const vector<int> &v) {
  int ret = v[0];
  for (int i = 1; i < v.size(); i++) ret = gcd(ret, v[i]);
  return ret;
}
int lcm(const vector<int> &v) {
  int ret = v[0];
  for (int i = 1; i < v.size(); i++) ret = lcm(ret, v[i]);
  return ret;
}
struct Student {
  string name;
  int no, point;
};
bool comp(const Student &a, const Student &b) {
  if (a.name != b.name) return a.name < b.name;
  if (a.point != b.point) return a.point > b.point;
  return a.no < b.no;
}
std::string replaceOtherStr(std::string &replacedStr, std::string from,
                            std::string to) {
  const unsigned int pos = replacedStr.find(from);
  const int len = from.length();
  if (pos == std::string::npos || from.empty()) {
    return replacedStr;
  }
  return replacedStr.replace(pos, len, to);
}
void countPN(int n, std::vector<int> &count) {
  int m = n;
  for (int i = 2; i * i <= n; ++i) {
    while (m % i == 0) {
      m /= i;
      count[i]++;
    }
    if (m == 1) break;
  }
  if (m != 1) count[m]++;
}
int main() {
  long long A, B, C, D, E, F, G, H, I, J, L, N, M, K, O, P, Q, R, S, T, U, V, W,
      X, Y, Z;
  long long sum, sum1, sum2, sum3, sum4;
  sum = sum1 = sum2 = sum3 = sum4 = 0;
  long long flg, flg1, flg2, flg3, flg4, flg5, flg6, flg7, flg8, cnt, cnt1,
      cnt2, cnt3, cnt4, cnt5, cnt6, cnt7, cnt8;
  flg = flg1 = flg2 = flg3 = flg4 = flg5 = flg6 = flg7 = flg8 = cnt = cnt1 =
      cnt2 = cnt3 = cnt4 = cnt5 = cnt6 = cnt7 = cnt8 = 0;
  long long max;
  long long max1;
  max = max1 = 0;
  long long min;
  long long min1;
  min = min1 = 1000000000;
  long long wk, wk1, wk2, wk3, wk4;
  wk = wk1 = wk2 = wk3 = wk4 = 0;
  bool f;
  long long ans = 0;
  std::cin >> N;
  std::vector<long long> v(N);
  for (long long i = 0; i < N; i++) {
    std::cin >> v[i];
  }
  for (long long i = 0; i < N; i++) {
    if (1 <= v[i] && 399 >= v[i]) {
      if (flg1 == 0) {
        cnt++;
        flg1 = 1;
      }
    } else if (400 <= v[i] && 799 >= v[i]) {
      if (flg2 == 0) {
        cnt++;
        flg2 = 1;
      }
    } else if (800 <= v[i] && 1199 >= v[i]) {
      if (flg3 == 0) {
        cnt++;
        flg3 = 1;
      }
    } else if (1200 <= v[i] && 1599 >= v[i]) {
      if (flg4 == 0) {
        cnt++;
        flg4 = 1;
      }
    } else if (1600 <= v[i] && 1999 >= v[i]) {
      if (flg5 == 0) {
        cnt++;
        flg5 = 1;
      }
    } else if (2000 <= v[i] && 2399 >= v[i]) {
      if (flg6 == 0) {
        cnt++;
        flg6 = 1;
      }
    } else if (2400 <= v[i] && 2799 >= v[i]) {
      if (flg7 == 0) {
        cnt++;
        flg7 = 1;
      }
    } else if (2800 <= v[i] && 3199 >= v[i]) {
      if (flg8 == 0) {
        cnt++;
        flg8 = 1;
      }
    } else {
      cnt8++;
    }
  }
  printf("%lld %lld\n", (((1) > (cnt)) ? (1) : (cnt)),
         (((8) < (cnt + cnt8)) ? (8) : (cnt + cnt8)));
  return 0;
}
