#include //#include const int FIB_PISANO_PERIOD_FOR_TEN = 60; static int getFibNModM(long n) { long r = n % FIB_PISANO_PERIOD_FOR_TEN; if (r == 0) return 0; int firstN = 0; int secondN = 1; int tempHolder = 1; for (int i = 1; i < r; i++) { tempHolder = (firstN + secondN) % 10; firstN = secondN; secondN = tempHolder; } return secondN; } static int getLastDigit(long n) { if (n <= 1) return (int) n; int result = getFibNModM(n + 2); if (result == 0) return 9; else return result - 1; } //TEST(FibSumLastDigitTest, Zero) { // ASSERT_EQ(getLastDigit(0), 0); //} //TEST(FibSumLastDigitTest, One) { // ASSERT_EQ(getLastDigit(1), 1); //} //TEST(FibSumLastDigitTest, Six) { // ASSERT_EQ(getLastDigit(6), 0); //} //TEST(FibSumLastDigitTest, Nine) { // ASSERT_EQ(getLastDigit(9), 8); //} //TEST(FibSumLastDigitTest, OneHundred) { // ASSERT_EQ(getLastDigit(100), 5); //} //TEST(FibLastDigitTest, One) { // ASSERT_EQ(getFibNModM(239, 1000), 161); //} // //TEST(FibLastDigitTest, Three) { // ASSERT_EQ(getFibNModM(2816213588, 30524), 10249); //} //TEST(FibLastDigitTest, Forty) { // ASSERT_EQ(1344, getGCD(1344, 1344)); //} // //TEST(FibLastDigitTest, ThreeThreeOne) { // ASSERT_EQ(4, getGCD(14159572, 63967072)); //} // //TEST(FibLastDigitTest, ReverseAB) { // ASSERT_EQ(4, getGCD(14159572, 63967072)); //} int main() { long n; std::cin >> n; int c = getLastDigit(n); std::cout << c << '\n'; }