import java.io.*;
import java.lang.*;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.StringTokenizer;
import java.math.BigInteger;

public class Main {
    static InputReader in = new InputReader(System.in);
    static PrintWriter out = new PrintWriter(System.out);

    public static void main(String[] args) {
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i =0 ; i<n; i++) a[i] = in.nextInt();
        Arrays.sort(a);
        int[] colors = new int[8];
        int countgm = 0;
        for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        }
        int min = 0;
        int max = 0;
        boolean check = false;
        for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        }
        if(!check) {
            ++min;
        }
        out.print(min + " ");
        out.print(max+countgm);
        out.close();
    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        public boolean hasNext() {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        }

        public BigInteger nextBigInteger() {
            return new BigInteger(next());
        }
    }
}
 import java.io.*; io.* java import java.lang.*; lang.* java import java.io.InputStream; InputStream java.io import java.io.InputStreamReader; InputStreamReader java.io import java.io.BufferedReader; BufferedReader java.io import java.io.OutputStream; OutputStream java.io import java.io.PrintWriter; PrintWriter java.io import java.io.IOException; IOException java.io import java.util.Arrays; Arrays java.util import java.util.StringTokenizer; StringTokenizer java.util import java.math.BigInteger; BigInteger java.math public class Main {
    static InputReader in = new InputReader(System.in);
    static PrintWriter out = new PrintWriter(System.out);

    public static void main(String[] args) {
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i =0 ; i<n; i++) a[i] = in.nextInt();
        Arrays.sort(a);
        int[] colors = new int[8];
        int countgm = 0;
        for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        }
        int min = 0;
        int max = 0;
        boolean check = false;
        for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        }
        if(!check) {
            ++min;
        }
        out.print(min + " ");
        out.print(max+countgm);
        out.close();
    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        public boolean hasNext() {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        }

        public BigInteger nextBigInteger() {
            return new BigInteger(next());
        }
    }
} Main static InputReader in = new InputReader(System.in); in new InputReader(System.in) static PrintWriter out = new PrintWriter(System.out); out new PrintWriter(System.out) public static void main(String[] args) {
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i =0 ; i<n; i++) a[i] = in.nextInt();
        Arrays.sort(a);
        int[] colors = new int[8];
        int countgm = 0;
        for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        }
        int min = 0;
        int max = 0;
        boolean check = false;
        for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        }
        if(!check) {
            ++min;
        }
        out.print(min + " ");
        out.print(max+countgm);
        out.close();
    } main {
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i =0 ; i<n; i++) a[i] = in.nextInt();
        Arrays.sort(a);
        int[] colors = new int[8];
        int countgm = 0;
        for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        }
        int min = 0;
        int max = 0;
        boolean check = false;
        for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        }
        if(!check) {
            ++min;
        }
        out.print(min + " ");
        out.print(max+countgm);
        out.close();
    } int n = in.nextInt(); n in.nextInt() in.nextInt in int[] a = new int[n]; a new int[n] n for(int i =0 ; i<n; i++) a[i] = in.nextInt(); int i =0 ; int i =0 ; i 0 i<n i n i++ i++ i a[i] = in.nextInt(); a[i] = in.nextInt() a[i] a i in.nextInt() in.nextInt in Arrays.sort(a) Arrays.sort Arrays a int[] colors = new int[8]; colors new int[8] 8 int countgm = 0; countgm 0 for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        } int i = 0; int i = 0; i 0 i<n i n i++ i++ i {
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        } {
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        } int val = a[i]/400; val a[i]/400 a[i] a i 400 if(val>=8) ++countgm;
            else{
                ++colors[val];
            } val>=8 val 8 ++countgm countgm {
                ++colors[val];
            } ++colors[val] colors[val] colors val int min = 0; min 0 int max = 0; max 0 boolean check = false; check false for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        } int i = 0; int i = 0; i 0 i<8 i 8 i++ i++ i {
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        } {
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        } if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            } colors[i]>0 colors[i] colors i 0 {
                check = true;
                ++min;
                ++max;
            } check = true check true ++min min ++max max if(!check) {
            ++min;
        } !check check {
            ++min;
        } ++min min out.print(min + " ") out.print out min + " " min " " out.print(max+countgm) out.print out max+countgm max countgm out.close() out.close out String[] args args static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        public boolean hasNext() {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        }

        public BigInteger nextBigInteger() {
            return new BigInteger(next());
        }
    } InputReader public BufferedReader reader; reader public StringTokenizer tokenizer; tokenizer public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        } InputReader {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        } reader = new BufferedReader(new InputStreamReader(stream), 32768) reader new BufferedReader(new InputStreamReader(stream), 32768) tokenizer = null tokenizer null InputStream stream stream public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        } next {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        } while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            } tokenizer == null || !tokenizer.hasMoreTokens() tokenizer == null tokenizer null !tokenizer.hasMoreTokens() tokenizer.hasMoreTokens() tokenizer.hasMoreTokens tokenizer {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            } try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                } catch (IOException e) {
                    throw new RuntimeException(e);
                } IOException e {
                    throw new RuntimeException(e);
                } throw new RuntimeException(e); new RuntimeException(e) {
                    tokenizer = new StringTokenizer(reader.readLine());
                } tokenizer = new StringTokenizer(reader.readLine()) tokenizer new StringTokenizer(reader.readLine()) return tokenizer.nextToken(); tokenizer.nextToken() tokenizer.nextToken tokenizer public int nextInt() {
            return Integer.parseInt(next());
        } nextInt {
            return Integer.parseInt(next());
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next public long nextLong() {
            return Long.parseLong(next());
        } nextLong {
            return Long.parseLong(next());
        } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next public double nextDouble() {
            return Double.parseDouble(next());
        } nextDouble {
            return Double.parseDouble(next());
        } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next public String nextLine() {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        } nextLine {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        } try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } Exception e {
                e.printStackTrace();
            } e.printStackTrace() e.printStackTrace e {
                return reader.readLine();
            } return reader.readLine(); reader.readLine() reader.readLine reader return null; null public boolean hasNext() {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        } hasNext {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        } String next = null; next null try {
                next = reader.readLine();
            } catch (Exception e) {
            } catch (Exception e) {
            } Exception e {
            } {
                next = reader.readLine();
            } next = reader.readLine() next reader.readLine() reader.readLine reader if (next == null) {
                return false;
            } next == null next null {
                return false;
            } return false; false tokenizer = new StringTokenizer(next) tokenizer new StringTokenizer(next) return true; true public BigInteger nextBigInteger() {
            return new BigInteger(next());
        } nextBigInteger {
            return new BigInteger(next());
        } return new BigInteger(next()); new BigInteger(next()) public class Main {
    static InputReader in = new InputReader(System.in);
    static PrintWriter out = new PrintWriter(System.out);

    public static void main(String[] args) {
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i =0 ; i<n; i++) a[i] = in.nextInt();
        Arrays.sort(a);
        int[] colors = new int[8];
        int countgm = 0;
        for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        }
        int min = 0;
        int max = 0;
        boolean check = false;
        for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        }
        if(!check) {
            ++min;
        }
        out.print(min + " ");
        out.print(max+countgm);
        out.close();
    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        public boolean hasNext() {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        }

        public BigInteger nextBigInteger() {
            return new BigInteger(next());
        }
    }
} public class Main {
    static InputReader in = new InputReader(System.in);
    static PrintWriter out = new PrintWriter(System.out);

    public static void main(String[] args) {
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i =0 ; i<n; i++) a[i] = in.nextInt();
        Arrays.sort(a);
        int[] colors = new int[8];
        int countgm = 0;
        for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        }
        int min = 0;
        int max = 0;
        boolean check = false;
        for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        }
        if(!check) {
            ++min;
        }
        out.print(min + " ");
        out.print(max+countgm);
        out.close();
    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        public boolean hasNext() {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        }

        public BigInteger nextBigInteger() {
            return new BigInteger(next());
        }
    }
} Main
import java.io.*;
import java.lang.*;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.StringTokenizer;
import java.math.BigInteger;

public class Main {
    static InputReader in = new InputReader(System.in);
    static PrintWriter out = new PrintWriter(System.out);

    public static void main(String[] args) {
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i =0 ; i<n; i++) a[i] = in.nextInt();
        Arrays.sort(a);
        int[] colors = new int[8];
        int countgm = 0;
        for(int i = 0; i<n; i++){
            int val = a[i]/400;
            if(val>=8) ++countgm;
            else{
                ++colors[val];
            }
        }
        int min = 0;
        int max = 0;
        boolean check = false;
        for(int i = 0; i<8; i++){
            if(colors[i]>0){
                check = true;
                ++min;
                ++max;
            }
        }
        if(!check) {
            ++min;
        }
        out.print(min + " ");
        out.print(max+countgm);
        out.close();
    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() {
            try {
                return reader.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        public boolean hasNext() {
            String next = null;
            try {
                next = reader.readLine();
            } catch (Exception e) {
            }
            if (next == null) {
                return false;
            }
            tokenizer = new StringTokenizer(next);
            return true;
        }

        public BigInteger nextBigInteger() {
            return new BigInteger(next());
        }
    }
}

