#include<bits/stdc++.h>
using namespace std;

using ui=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;

void solve()
{//我们想要知道 阶乘的从右往左数第一个非零数字 那么 我们肯定要关注n!的最后几位数 那么n!的最后几位数可以通过如下方法获得
//直接模拟计算n!的过程 每一步都乘上当前的数 然后去掉末尾所有的0 并保留足够多的低位数字 即mod上一个大数 如1e6
//这样既能保证后续乘法中进位信息的正确传递 又能控制数字范围在1e18内 最后输出结果的个位数即可
//多提一嘴 有人可能会想 我只在个位上进行乘法不就好了 每次结果再保留个位 如果可以mod10 则保留十位
//这种想法其实是错的 因为一个数字和另一个数字相乘的第一个非零数字的数值 不仅来自于它本身的个位乘另外一个数 还来自高位乘法向低位的进位 所以 我们要保留足够的有效数字 防止位数不够 得到错误答案
	ll n,ans=1;
	cin >> n;
	for(ll i=1;i<=n;i++)
	{
		ans=ans*i;

		while(ans%10==0) ans/=10;
		
		ans%=1000000;
	}
	cout << ans%10;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t=1;
	//cin >> t;
	
	while(t--)
	{
		solve();
	}
	return 0;
}