#include <bits/stdc++.h>
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using namespace std;
template <typename T>
inline void printQueue(queue<T>& oq) {
  queue<T> q(oq);
  int qCount = q.size();
  for (int i = 0; i < qCount; ++i) {
    T qe = q.front();
    q.pop();
    cout << qe;
    if (i != qCount - 1) {
      cout << ", ";
    }
    q.push(qe);
  }
  cout << endl;
}
template <typename T>
inline void PV(vector<T> v) {
  int vc = v.size();
  for (int i = 0; i < vc; ++i) {
    cout << v[i];
    if (i != vc - 1) {
      cout << ", ";
    }
  }
  cout << endl;
}
inline double round(double val) {
  if (val < 0) return ceil(val - 0.5);
  return floor(val + 0.5);
}
int main() {
  ull n;
  cin >> n;
  int mnc = 0;
  int mxc = 0;
  int mc = 0;
  unordered_map<int, bool> cM;
  bool lr = false;
  for (int i = 0; i < n; ++i) {
    int r;
    cin >> r;
    int rc;
    if (r >= 1 && r <= 399) {
      lr = true;
      rc = 1;
    }
    if (r >= 400 && r <= 799) {
      lr = true;
      rc = 2;
    }
    if (r >= 800 && r <= 1199) {
      lr = true;
      rc = 3;
    }
    if (r >= 1200 && r <= 1599) {
      lr = true;
      rc = 4;
    }
    if (r >= 1600 && r <= 1999) {
      lr = true;
      rc = 5;
    }
    if (r >= 2000 && r <= 2399) {
      lr = true;
      rc = 6;
    }
    if (r >= 2400 && r <= 2799) {
      lr = true;
      rc = 7;
    }
    if (r >= 2800 && r <= 3199) {
      lr = true;
      rc = 8;
    }
    if (!cM.count(rc)) {
      cM[rc] = true;
      ++mnc;
    }
    if (r >= 3200) {
      ++mc;
    }
  }
  if (mc > 0) {
    if (lr) {
      mxc = mnc + mc;
    } else {
      mnc = 1;
      mxc = mc;
    }
  } else {
    mxc = mnc;
  }
  cout << mnc << " " << mxc;
}
