#include <bits/stdc++.h>
const long long int INF = 1e9;
using namespace std;
struct Point {
  int x, y;
};
bool vector_finder(std::vector<long long int> vec, long long int number) {
  auto itr = std::find(vec.begin(), vec.end(), number);
  size_t index = std::distance(vec.begin(), itr);
  if (index != vec.size()) {
    return true;
  } else {
    return false;
  }
}
long long int factorial(long long int N) {
  long long int ans = 1;
  for (long long int i = 1; i <= (long long int)(N); i++) {
    ans *= i;
  }
  return ans;
}
vector<long long int> Eratosthenes(long long int N) {
  bool arr[N + 1];
  arr[0] = false;
  arr[1] = false;
  for (long long int i = 2; i < N + 1; i++) {
    arr[i] = true;
  }
  for (long long int i = 2; i <= sqrt(N); i++) {
    if (arr[i]) {
      for (long long int j = 0; i * (j + 2) <= N; j++) {
        arr[i * (j + 2)] = false;
      }
    }
  }
  vector<long long int> prime;
  for (long long int i = 1; i <= (long long int)(N); i++) {
    if (arr[i] == true) {
      prime.push_back(i);
    }
  }
  return prime;
}
char alphabet[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
                   'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
                   's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
int main() {
  int N, c;
  cin >> N;
  int isSomeone[9];
  for (int i = 0; i < (int)(9); i++) {
    isSomeone[i] = 0;
  }
  for (int i = 0; i < (int)(N); i++) {
    cin >> c;
    int color = c / 400;
    isSomeone[color]++;
  }
  int cnt = 0;
  for (int i = 0; i < (int)(8); i++) {
    if (isSomeone[i] > 0) cnt++;
  }
  if (isSomeone[8] > 0) {
    cout << cnt << " " << cnt + isSomeone[8] << endl;
  } else {
    cout << cnt << " " << cnt << endl;
  }
  return 0;
}
