(*
　　　  ∧＿∧　やあ
　　 （´・ω・｀)　　　　　/　　　　　ようこそ、バーボンハウスへ。
　　 ／∇y:::::＼　　　 [￣]　　　　　このテキーラはサービスだから、まず飲んで落ち着いて欲しい。
　　 |:⊃:|:::::|　　　|──|
￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣|　うん、「また」なんだ。済まない。
￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣|￣　  仏の顔もって言うしね、謝って許してもらおうとも思っていない。
￣￣￣￣￣￣￣￣￣￣￣￣￣￣／|
　　　　∇　∇　∇　∇　　　／.／|　　　でも、この提出を見たとき、君は、きっと言葉では言い表せない
　　　　┴　┴　┴　┴　／ ／　  |　　　「ときめき」みたいなものを感じてくれたと思う。
￣￣￣￣￣￣￣￣￣￣|／　　  |　　　殺伐としたコンテストの中で、そういう気持ちを忘れないで欲しい
￣￣￣￣￣￣￣￣￣￣　　　　 |　　　そう思って、この提出を投げたんだ。
　　　(⊆⊇)　(⊆⊇)　(⊆⊇)　　|
　    ||　　 ||　　||　　|　　　 じゃあ、判定を聞こうか。
　　.／|＼　／|＼ ／|＼
*)

open System;

let tmpn = Console.ReadLine();
let n = int(tmpn)
let tmpa = Console.ReadLine().Split(' ');
let a = [| for i in 0 .. n-1 -> 0|]

for i = 0 to n-1 do
    Array.set a i (int(tmpa.[i]))
let sortedArr = Array.sort a

let add1 k m =
    let oldValue = Map.find k m in
    let removed = Map.remove k m in 
    Map.add k (oldValue+1) removed
let counter num map =
    if (Map.containsKey num map) then add1 num map
    else Map.add num 1 map

let rec countMap i m =
    if i < 0 then m
    else countMap (i-1) (counter sortedArr.[i] m)

let listedMap = Map.toList (countMap (n-1) Map.empty)

let rec findAns l ans =
    match l with
    | [] -> ans
    | (num, count) :: t ->
        if num = count then findAns t ans
        elif num > count then findAns t (ans+count)
        else findAns t (ans + (count - num))

Console.WriteLine(findAns listedMap 0)