Consider the number triangle below, in which each number is equal to the number above plus the number to the left. If there is no number above, assume it's a `0`.

The triangle has `5` rows and the sum of the last row is `sum([1,4,9,14,14]) = 42`.

You will be given an integer `n` and your task will be to return the sum of the last row of a triangle of `n` rows. 

In the example above:
More examples in test cases. Good luck!

```if:javascript
### Note

This kata uses native arbitrary precision integer numbers ( `BigInt`, `1n` ).  
Unfortunately, the testing framework and even native `JSON` do not fully support them yet.  
`console.log(1n)` and `(1n).toString()` work and can be used for debugging.  

We apologise for the inconvenience.
```

Source: codewars | Difficulty: EASY
Tags: Mathematics

Starter code: def solve(n):
	

Solutions:
from math import factorial as fac

def solve(n):
	return fac(2 * n) // fac(n) // fac(n + 1)


def binomial_coefficient(n, k):
	if not n >= k >= 0:
		return None
	lower_k = min(k, n - k)
	coeff = 1
	for i in range(lower_k):
		coeff *= n - i
		coeff //= i + 1
	return coeff

def catalan_number(n):
	return binomial_coefficient(2 * n, n) // (n + 1)

def solve(n):
	return catalan_number(n)


from math import factorial

def solve(n):
	return factorial(2 * n) // (factorial(n) * factorial(n + 1))


from decimal import Decimal
import numpy as np

def solve(n):
	a = np.ones(1, dtype=Decimal)
	for i in range(n):
		a = np.append(np.add.accumulate(a), [0])
	return a.sum()


from math import factorial

def binominal(n, k):
	if k < 0 or n < k:
		return None
	product = 1
	for i in range(k):
		product *= n - i
		product //= i + 1
	return product

def catalan(n):
	return binominal(2 * n, n) // (n + 1)

def solve(n):
	return catalan(n)


def binomial(n, k):
	(n, k) = (int(n), int(k))
	if not n >= k >= 0:
		return None
	k = min(k, n - k)
	product = 1
	for i in range(k):
		product *= n - i
		product //= i + 1
	return product

def catalan(n):
	return binomial(2 * n, n) // (n + 1)

def solve(n):
	return catalan(n)


from itertools import accumulate

def solve(n):
	a = [1]
	for _ in range(n):
		a = list(accumulate(a))
		a += a[-1:]
	return a[-1]


from functools import reduce
from operator import mul

def solve(n):
	return reduce(mul, range(n + 2, 2 * n + 1)) // reduce(mul, range(1, n + 1))


def solve(n):
	a = [1]
	for _ in range(n - 1):
		b = [1]
		for x in a[1:]:
			b.append(x + b[-1])
		b.append(b[-1])
		a = b
	return sum(a)