# Task
 You're given a two-dimensional array of integers `matrix`. Your task is to determine the smallest non-negative integer that is not present in this array.

# Input/Output


 - `[input]` 2D integer array `matrix`

  A non-empty rectangular matrix. 

 `1 ≤ matrix.length ≤ 10`

 `1 ≤ matrix[0].length ≤ 10`


 - `[output]` an integer

  The smallest non-negative integer that is not present in matrix.


# Example

 For 
 
 ```
 matrix = [
 [0, 2],
 [5, 1]]```
 the result should be `3`
 
 0,1,2,`(3)`...5

Difficulty: EASY
Starter code: def smallest_integer(matrix):
	

Solutions:
def smallest_integer(matrix):
	nums = set(sum(matrix, []))
	n = 0
	while n in nums:
		n += 1
	return n


from itertools import filterfalse, chain, count

def smallest_integer(matrix):
	return next(filterfalse(set(chain.from_iterable(matrix)).__contains__, count()))


def smallest_integer(matrix):
	i = 0
	matrix = sum(matrix, [])
	while True:
		if i not in matrix:
			return i
		i += 1


smallest_integer = lambda m: (lambda s: min({n + 1 for n in s if -1 <= n} - s))(set(sum(m, [-1])))


from itertools import count

def smallest_integer(matrix):
	nums = {n for row in matrix for n in row}
	for i in count():
		if i not in nums:
			return i


def smallest_integer(arr):
	res = sorted(set((x for row in arr for x in row)))
	for x in range(res[-1]):
		if x not in res:
			return x
	return max(res[-1] + 1, 0)


def smallest_integer(matrix):
	numbers = sorted(set((n for row in matrix for n in row if n >= 0)))
	return next((b for (a, b) in zip(numbers, range(len(numbers))) if a != b), len(numbers))


from itertools import chain, count

def smallest_integer(matrix):
	xs = set(chain.from_iterable(matrix))
	return next((i for i in count(0) if i not in xs))


def smallest_integer(matrix):
	(s, n) = ({elt for l in matrix for elt in l}, 0)
	while True:
		if n not in s:
			return n
		n += 1


def smallest_integer(matrix):
	r = [j for i in matrix for j in i]
	i = 0
	while True:
		if i not in r:
			return i
		i += 1