updated to use unsigned long long; there is some other mistake