#include <bits/stdc++.h>
int descending_compare(const void *a, const void *b) {
  if (*(int *)a > *(int *)b) {
    return -1;
  } else if (*(int *)a == *(int *)b) {
    return 0;
  } else {
    return 1;
  }
}
int ascending_compare(const void *a, const void *b) {
  if (*(int *)a < *(int *)b) {
    return -1;
  } else if (*(int *)a == *(int *)b) {
    return 0;
  } else {
    return 1;
  }
}
int lower_bound(int *a, int n, int key) {
  int left, mid, right;
  left = 0, right = n;
  mid = (left + right) / 2;
  while ((left + 1 != mid || mid + 1 != right) && mid != left) {
    if (key > a[mid]) {
      left = mid;
    } else {
      right = mid + 1;
    }
    mid = (left + right) / 2;
  }
  if (a[left] >= key) return left;
  if (a[mid] >= key) return mid;
  if (a[right] >= key) return right;
  return n;
}
unsigned long gcd(unsigned long x, unsigned long y) {
  if (y == 0) {
    return x;
  } else {
    return gcd(y, x % y);
  }
}
long long calc(int x) {
  long long rtn = 1;
  int i;
  for (i = x; i > 1; i--) {
    rtn = (rtn * i);
  }
  return rtn;
}
int main(void) {
  int n;
  int a;
  int i, j;
  int cnt = 0;
  int min = 0, max = 0;
  int color[9] = {0};
  int border[9] = {400, 800, 1200, 1600, 2000, 2400, 2800, 3200, 4801};
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &a);
    for (j = 0; j < 9; j++) {
      if (a < border[j]) {
        color[j]++;
        break;
      }
    }
  }
  for (i = 0; i < 8; i++) {
    if (color[i] > 0) {
      min++;
    }
    if (color[i] == 0) {
      cnt++;
    }
  }
  if (min == 0 && color[8] > 0) {
    min = 1;
    max = color[8];
    if (max > 8) {
      max = 8;
    }
    printf("%d %d\n", min, max);
    return 0;
  }
  max = min + color[8];
  if (max > 8) {
    max = 8;
  }
  printf("%d %d\n", min, max);
  return 0;
}
