padovan(n) = last(BigInt[0 1 1; 1 0 0; 0 1 0] ^ n * BigInt[1, 1, 1])