#include <bits/stdc++.h>
using namespace std;
int main() {
  int N;
  cin >> N;
  int i;
  vector<int> gray, brown, green, lightBlue, Blue, yellow, orange, red, rainbow;
  for (i = 0; i < N; i++) {
    int a;
    cin >> a;
    if (a <= 399) {
      gray.push_back(a);
    } else if (a <= 799) {
      brown.push_back(a);
    } else if (a <= 1199) {
      green.push_back(a);
    } else if (a <= 1599) {
      lightBlue.push_back(a);
    } else if (a <= 1999) {
      Blue.push_back(a);
    } else if (a <= 2399) {
      yellow.push_back(a);
    } else if (a <= 2799) {
      orange.push_back(a);
    } else if (a <= 3199) {
      red.push_back(a);
    } else {
      rainbow.push_back(a);
    }
  }
  int grayA, brownA, greenA, lightBlueA, BlueA, yellowA, orangeA, redA,
      rainbowA;
  if (gray.size() == 0) {
    grayA = 0;
  } else {
    grayA = 1;
  }
  if (brown.size() == 0) {
    brownA = 0;
  } else {
    brownA = 1;
  }
  if (green.size() == 0) {
    greenA = 0;
  } else {
    greenA = 1;
  }
  if (lightBlue.size() == 0) {
    lightBlueA = 0;
  } else {
    lightBlueA = 1;
  }
  if (Blue.size() == 0) {
    BlueA = 0;
  } else {
    BlueA = 1;
  }
  if (yellow.size() == 0) {
    yellowA = 0;
  } else {
    yellowA = 1;
  }
  if (orange.size() == 0) {
    orangeA = 0;
  } else {
    orangeA = 1;
  }
  if (red.size() == 0) {
    redA = 0;
  } else {
    redA = 1;
  }
  if (rainbow.size() == 0) {
    rainbowA = 0;
  } else {
    rainbowA = rainbow.size();
  }
  int ansMin =
      grayA + brownA + greenA + lightBlueA + BlueA + yellowA + orangeA + redA;
  int ansMax = grayA + brownA + greenA + lightBlueA + BlueA + yellowA +
               orangeA + redA + rainbowA;
  if (ansMin == 0) {
    ansMin = 1;
  }
  if (8 < ansMax) {
    ansMax = 8;
  }
  cout << ansMin;
  cout << " ";
  cout << ansMax << endl;
}
