#include <bits/stdc++.h>
using std::cerr;
using std::cin;
using std::cout;
using std::deque;
using std::endl;
using std::flush;
using std::forward_as_tuple;
using std::get;
using std::make_tuple;
using std::priority_queue;
using std::string;
using std::tie;
using std::tuple;
using std::vector;
int main() {
  std::ios::sync_with_stdio(false);
  signed long long N;
  cin >> N;
  vector<signed long long> a(N);
  for (signed long long i = 0; i < N; ++i) cin >> a[i];
  for (signed long long i = 0; i < N; ++i) a[i] /= 400;
  for (signed long long i = 0; i < N; ++i)
    a[i] = std::min<signed long long>(8, a[i]);
  bool flag[9] = {};
  signed long long count_free = 0;
  for (signed long long i = 0; i < N; ++i) flag[a[i]] = true;
  for (signed long long i = 0; i < N; ++i)
    if (a[i] == 8) ++count_free;
  signed long long count_color = 0;
  for (signed long long i = 0; i < 8; ++i)
    if (flag[i]) ++count_color;
  cout << std::max<signed long long>(1, count_color) << " "
       << std::min<signed long long>(8, count_free + count_color) << endl;
  return 0;
}
