Write a function `lucas(n)` that returns the n-th Lucas number. The Lucas sequence is defined as:
- L(0) = 2
- L(1) = 1
- L(n) = L(n-1) + L(n-2) for n >= 2
For example, the sequence begins: 2, 1, 3, 4, 7, 11, 18, 29, ...
Implement the function efficiently. It should handle non-negative integers. The function should return an integer.
Constraints
- 0 <= n <= 5000
- The result may be large; Python handles big integers natively.
- Your implementation should be iterative or use memoization to avoid exponential time.