#include <bits/stdc++.h>
const double pi = acos(-1.0);
using namespace std;
inline long long MAX2(long long a, long long b) {
  return (a) > (b) ? (a) : (b);
}
inline long long MAX3(long long a, long long b, long long c) {
  return (a) > (b) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c));
}
inline long long MIN2(long long a, long long b) {
  return (a) < (b) ? (a) : (b);
}
inline long long MIN3(long long a, long long b, long long c) {
  return (a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c));
}
int mod = 1e9 + 7;
int64_t extGcd(int64_t a, int64_t b, int64_t& x, int64_t& y) {
  if (!a) {
    x = 0;
    y = 1;
    return b;
  }
  int64_t x1, y1;
  int64_t d = extGcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
inline int addMod(int a, int b, int m = mod) { return ((int64_t)a + b) % m; }
inline int mulMod(int a, int b, int m = mod) { return ((int64_t)a * b) % m; }
inline int divMod(int a, int b, int m = mod) {
  int64_t x, y;
  int64_t g = extGcd(b, m, x, y);
  if (g != 1) {
    cerr << "Bad gcd!" << '\n';
    for (;;)
      ;
  }
  x = (x % m + m) % m;
  return mulMod(a, x, m);
}
int dx[] = {1, 1, 0, -1, -1, -1, 0, 1};
int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
inline long long exp(long long a, long long b) {
  if (a == 0) return 0ll;
  long long r = 1LL;
  while (b > 0) {
    if (b & 1) {
      r = r * (a % mod);
      r = (r + mod) % mod;
    }
    b /= 2;
    a = (a % mod) * (a % mod);
    a = (a + mod) % mod;
  }
  return (r + mod) % mod;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  if (a == 0) return b;
  return gcd(b, a % b);
}
unsigned long int setbits(long long n) {
  unsigned long int count = 0;
  while (n) {
    n &= (n - 1);
    count++;
  }
  return count;
}
int getcol(int n) {
  if (n >= 1 and n <= 399) return 1;
  if (n >= 400 and n <= 799) return 2;
  if (n >= 800 and n <= 1199) return 3;
  if (n >= 1200 and n <= 1599) return 4;
  if (n >= 1600 and n <= 1999) return 5;
  if (n >= 2000 and n <= 2399) return 6;
  if (n >= 2400 and n <= 2799) return 7;
  if (n >= 2800 and n <= 3199)
    return 8;
  else
    return 9;
}
int getmin(int a[], int n) {
  set<int> col;
  int cc = 0;
  for (int i = 0; i < n; i++) {
    int type = getcol(a[i]);
    if (type == 9)
      cc++;
    else
      col.insert(type);
  }
  int sum = col.size() + (col.size() == 0 ? 1 : 0);
  return sum;
}
int getmax(int a[], int n) {
  set<int> col;
  int cc = 0;
  for (int i = 0; i < n; i++) {
    int type = getcol(a[i]);
    if (type == 9)
      cc++;
    else
      col.insert(type);
  }
  int sum = col.size() + (MIN2(cc, 8));
  return sum;
}
int main() {
  int n;
  cin >> n;
  int a[n];
  for (long long i = (long long)(0); i < (long long)(n); i++) cin >> a[i];
  sort(a, a + n);
  int ans1 = getmin(a, n);
  int ans2 = getmax(a, n);
  cout << ans1 << " " << ans2 << '\n';
}
