#include <iostream>
#include <vector>
using namespace std;

int find_gap(std::vector<int> const& vec) {
	std::vector<bool> gap(vec.size()+1, false);
	gap[0] = true; // special case - we want results >= 1.
	for (auto index : vec) {
		if (index < gap.size()) {
			gap[index] = true;
		}
	}
	size_t unused_value = 0;
	for (; unused_value < gap.size(); ++unused_value) {
		if (!gap[unused_value]) {
			break;
		}
	}
	return unused_value;
}

int main() {
	std::cout << find_gap({1,2,4,5}) << std::endl;
	std::cout << find_gap({2}) << std::endl;
	std::cout << find_gap({1,2,3}) << std::endl;
	// your code goes here
	return 0;
}