import sys sys.setrecursionlimit(10**7) def I(): return int(sys.stdin.readline().rstrip()) def MI(): return map(int,sys.stdin.readline().rstrip().split()) def LI(): return list(map(int,sys.stdin.readline().rstrip().split())) def LI2(): return list(map(int,sys.stdin.readline().rstrip())) def S(): return sys.stdin.readline().rstrip() def LS(): return list(sys.stdin.readline().rstrip().split()) def LS2(): return list(sys.stdin.readline().rstrip()) n = I() mod = 10**9+7 if n >= mod: print(0) exit() ''' X = [1] for i in range(1,10**9+7): x = (X[-1]*i) % mod if i % 10**7 == 0: X.append(x) ''' X = [1, 10000000, 998600007, 294000, 999917687, 28812, 719987904, 927205936, 360764682, 152718253, 193097225, 601315142, 534895288, 953245298, 785819620, 174889406, 764123872, 330692601, 763327331, 874774663, 375315483, 878286250, 647439189, 427622916, 121593507, 537211368, 702275322, 612699655, 199108686, 535809374, 74800323, 967683307, 72389408, 472780472, 354782487, 580782917, 656427064, 979853923, 133588584, 395303171, 293151131, 868656266, 166150597, 209886708, 873548950, 748320832, 310406940, 778761180, 783362459, 223066786, 219266256, 777219477, 210921125, 467482635, 132915653, 638274744, 137963022, 989527553, 722518168, 135999988, 228800056, 183023769, 985676855, 303165102, 921820359, 155717397, 300585633, 700253396, 946793865, 276985666, 842770252, 731431882, 353583343, 583189134, 139080308, 269828390, 964512982, 941275070, 460638157, 482671013, 697042351, 357769900, 946400795, 351411422, 413700856, 138479925, 666350862, 881923285, 367352605, 161393288, 183222294, 372873998, 758691475, 810918538, 384156060, 445362222, 127165890, 436543616, 685310820, 50796051, 644427650] ans = X[n//10**7] for i in range((10**7)*(n//10**7)+1,n+1): ans *= i ans %= mod print(ans)