#include typedef unsigned long long U; U fib(int n) { if (n < 2) return n; U a = 1, b = 1, c = 1, d = 0, x = 1, y = 0, z = 0, w = 1, t; while (n) { if (n & 1) { t = x * a + y * c; y = x * b + y * d; x = t; t = z * a + w * c; w = z * b + w * d; z = t; } t = a * a + b * c; b = a * b + b * d; a = t; t = c * a + d * c; d = c * b + d * d; c = t; n >>= 1; } return x; } int main(int argc, char **argv[]) { for (int i = 0;i < int(argv);i++) printf("%llu ", fib(i)); }