#include <bits/stdc++.h>
using namespace std;
void printVec(std::vector<int>& vec) {
  std::cout << "";
  for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
  }
  std::cout << std::endl;
}
void printVec1(std::vector<string>& vec) {
  std::cout << "";
  for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
  }
  std::cout << std::endl;
}
void printVec2(std::vector<int64_t>& vec) {
  std::cout << "";
  for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
  }
  std::cout << std::endl;
}
int64_t gcd(int64_t a, int64_t b) { return b != 0 ? gcd(b, a % b) : a; }
int64_t lcm(int64_t a, int64_t b) { return a * b / gcd(a, b); }
bool comp(const string a, const string b) { return a.length() < b.length(); }
bool integer(double num) { return floor(num) == num; }
string gen(int num) {
  string str = "";
  for (int i = 0; i < num; i++) str += ".";
  return str;
}
int64_t fact(int num) {
  if (num == 0)
    return 1;
  else
    return num * fact(num - 1);
}
int rate(int num) {
  if (num <= 399) return 0;
  if (num <= 799) return 1;
  if (num <= 1199) return 2;
  if (num <= 1599) return 3;
  if (num <= 1999) return 4;
  if (num <= 2399) return 5;
  if (num <= 2799) return 6;
  if (num <= 3199) return 7;
  return 8;
}
int main() {
  int n;
  cin >> n;
  vector<int> a(n), score(9);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    score[rate(a[i])]++;
  }
  int minz = 0, maxx;
  for (int i = 0; i < 8; i++) {
    if (score[i] != 0) minz++;
  }
  maxx = score[8] + minz;
  cout << minz << " " << maxx;
  cout << endl;
  return 0;
}
