import sys def solve(): n = int(sys.stdin.readline()) MOD = 10**9 + 7 # n! を計算する # n! = 1 * 2 * 3 * ... * n # 定義により 0! = 1 if n == 0: print(1) return # Wilsonの定理の簡単な応用: # もし n が MOD 以上であれば、n! の因数の中に MOD が含まれる。 # MOD = 10^9 + 7 は素数である。 # よって、n >= MOD の場合、n! は MOD で割り切れる。 # したがって、n! mod MOD = 0 となる。 if n >= MOD: print(0) return # n < MOD の場合、単純に階乗を計算し、各ステップで MOD を取る。 # これにより、数値が大きくなりすぎるのを防ぐ。 result = 1 for i in range(1, n + 1): result = (result * i) % MOD # Note: If result becomes 0 at any point, it stays 0. # However, since MOD is prime and i <= n < MOD, i will never be a multiple of MOD, # and result will only be 0 if n >= MOD, which is handled above. print(result) if __name__ == "__main__": solve()