#include <bits/stdc++.h>
using namespace std;
template <typename T0, typename T1>
std::ostream& operator<<(std::ostream& os, const map<T0, T1>& v) {
  for (typename map<T0, T1>::const_iterator p = v.begin(); p != v.end(); p++) {
    os << p->first << ": " << p->second << " ";
  }
  return os;
}
template <typename T0, typename T1>
std::ostream& operator<<(std::ostream& os, const pair<T0, T1>& v) {
  os << v.first << ": " << v.second << " ";
  return os;
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const vector<T>& v) {
  for (int i = 0; i < (int)v.size(); i++) {
    os << v[i] << " ";
  }
  return os;
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const vector<vector<T> >& v) {
  for (int i = 0; i < (int)v.size(); i++) {
    os << v[i] << endl;
  }
  return os;
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const set<T>& v) {
  vector<T> tmp(v.begin(), v.end());
  os << tmp;
  return os;
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const deque<T>& v) {
  vector<T> tmp(v.begin(), v.end());
  os << tmp;
  return os;
}
long long f(long long v) {
  if (v < 400) return 0;
  if (v < 800) return 1;
  if (v < 1200) return 2;
  if (v < 1600) return 3;
  if (v < 2000) return 4;
  if (v < 2400) return 5;
  if (v < 2800) return 6;
  if (v < 3200) return 7;
  return 8;
}
int main() {
  long long N;
  while (cin >> N) {
    vector<long long> w(N);
    map<long long, long long> hi;
    long long wc = 0;
    for (int i = 0, _n = (N); (i) < (int)_n; ++i) {
      long long v;
      cin >> v;
      long long l = f(v);
      if (l == 8)
        wc++;
      else
        hi[l]++;
    }
    cout << hi.size() << " " << min<long long>(8LL, hi.size() + wc) << endl;
  }
  return 0;
}
