Go: package main

import (
	"bufio"
	"os"
	"strconv"
	"fmt"
)

var scanner = bufio.NewScanner(os.Stdin)

func nextInt() int {
	scanner.Scan()
	i, e := strconv.Atoi(scanner.Text())
	if e != nil {
		panic(e)
	}
	return i
}

func factorial(n int) int {
	if n == 1 {
		return 1
	}
	return n*factorial(n-1)
}
func main() {
	scanner.Split(bufio.ScanWords)
	n := nextInt()
	fmt.Println(factorial(n))
}

Python: # coding=utf-8

###
### for python program
###

import sys
import math

# math class
class mymath:
    ### pi
    pi = 3.14159265358979323846264338

    ### Prime Number
    def pnum_eratosthenes(self, n):
        ptable = [0 for i in range(n+1)]
        plist = []

        for i in range(2, n+1):
            if ptable[i]==0:
                plist.append(i)
                for j in range(i+i, n+1, i):
                    ptable[j] = 1
        return plist

    def pnum_check(self, n):
        if (n==1):
            return False
        elif (n==2):
            return True
        else:
            for x in range(2,n):
                if(n % x==0):
                    return False
            return True

    ### GCD
    def gcd(self, a, b):
        if b == 0:
            return a
        return self.gcd(b, a%b)

    ### LCM
    def lcm(self, a, b):
        return (a*b)//self.gcd(a,b)

    ### Mat Multiplication
    def mul(self, A, B):
        ans = []
        for a in A:
            c = 0
            for j, row in enumerate(a):
                c += row*B[j]
            ans.append(c)
        return ans
    
    ### intチェック
    def is_integer(self, n):
        try:
            float(n)
        except ValueError:
            return False
        else:
            return float(n).is_integer()

    ### 幾何学問題用
    def dist(self, A, B):
        d = 0
        for i in range(len(A)):
            d += (A[i]-B[i])**2            
        d = d**(1/2)
        return d

    ### 絶対値
    def abs(self, n):
        if n >= 0:
            return n
        else:
            return -n   

mymath = mymath()

### output class
class output:
    ### list
    def list(self, l):
        l = list(l)
        #print(" ", end="")
        for i, num in enumerate(l):
            print(num, end="")
            if i != len(l)-1:
                print(" ", end="")
        print()

output = output()

### input sample
#i = input()
#N = int(input())
#A, B, C = [x for x in input().split()]
#N, K = [int(x) for x in input().split()]
#inlist = [int(w) for w in input().split()]

#R = float(input())
#A.append(list(map(int,input().split())))

#for line in sys.stdin.readlines():
#    x, y = [int(temp) for temp in line.split()]

#abc list
#abc = [chr(ord('a') + i) for i in range(26)]

### output sample
# print("{0} {1} {2:.5f}".format(A//B, A%B, A/B))
# print("{0:.6f} {1:.6f}".format(R*R*math.pi,R*2*math.pi))
# print(" {}".format(i), end="")

def printA(A):
    N = len(A)
    for i, n in enumerate(A):
        print(n, end='')
        if i != N-1:
            print(' ', end='')
    print()

# リスト内包表記 ifあり
# [x-k if x != 0 else x for x in C]

# ソート（代入する必要なし）
# N.sort()

# 10000個の素数リスト
# P = mymath.pnum_eratosthenes(105000)

def get_input():
    N = []
    while True:
        try:
            #N.append(input())
            #N.append(int(input()))
            #N.append(float(input()))
            N.append([int(x) for x in input().split()])
        except EOFError:
            break
    return N

#D = get_input()

n = int(input())

ans = 1

for i in range(1,n+1):
    ans *= i

print(ans)

Python: '''
Created on Mar 22, 2013

@author: wukc
'''

from numpy import product
from sys import stdin

n=int(stdin.readline())
print(product(range(1,n+1)))

Python: import sys
import math

n = (int)(input())
res = 1
for i in range(1,n+1):
    res *= i

print(res)

Python: import math
print(math.factorial(int(input())))

Python: from functools import reduce as R
print(R(lambda x, y: x*y, range(1, int(input())+1)))

Python: def f(x):return 1if x<2else x*f(x-1)
print(f(int(input())))

Python: 
import math

num = int(input)
print(math.factorial(num))

Python: def fac(n):
    ans=1
    for i in range(n+1):
        if i is not 0:
            ans*=i
    return ans
n = eval(input())
print(fac(n))

Python: def Factorial(n):
    if n <= 1: return 1
    return n*Factorial(n-1)
print(Factorial(int(input())))

Python: import math
print(math.factorial(int(input())))

Python: kazu=int(input());
ans=kazu
for h in range(kazu-1):
    ans=ans*(h+1)
print(ans)

Python: import math
print(math.factorial(int(input())))

Python: n = int(input())
result = n
for _ in range(n)[:1:-1] : result *= _
print(result)

Python: from math import factorial
print(factorial(int(input())))

Python: n = int(input())
f = 1
for x in range(1, n+1):
    f *= x
print(f)

Python: import math
print(math.factorial(int(input())))

Python: import math;print(math.factorial(int(input())))

Python: from math import factorial

if __name__ == '__main__':
    # ??????????????\???
    num = int(input())

    # ??????????¨????
    result = factorial(num)

    # ???????????¨???
    print(result)

Python: v = (1,
     1,
     2,
     6,
     24,
     120,
     720,
     5040,
     40320,
     362880,
     3628800,
     39916800,
     479001600,
     6227020800,
     87178291200,
     1307674368000,
     20922789888000,
     355687428096000,
     6402373705728000,
     121645100408832000,
     2432902008176640000)

print(v[int(input())])

Python: n=int(input())
s=1
for i in range(n):
	s*=n
	n-=1
print(s)

Python: import math
print(math.factorial(int(input())))

Python: def f(x):
    if x == 1:
        return x
    else:
        return x*f(x-1)

n = int(input())
print(f(n))

Python: n = int(input())
ans = 1
for i in range(1, n+1) :
    ans *= i
print(ans)

Python: import math
x=int(input())
print(math.factorial(x))

Python: import math
x=int(input())
x=math.factorial(x)
print(x)

Python: from math import factorial as f
print(f(int(input())))

Python: #mathモジュールを使い、階乗を計算する
import math
print(math.factorial(int(input())))

Python: from math import factorial
print(factorial(int(input())))

Python: # Factorial
def f(n):
    if n == 1: return 1
    return f(n-1) * n
n = int(input())
print(f(n))

Python: num = int(input())
ans = 1
for i in range(num,1,-1):
    ans *= i
print(ans)

Python: n = int(input())
f = 1
for i in range(n):
    f = f*(i+1)
print(f)

Python: def fac(n):
    f = 1
    for i in range(2, n + 1):
        f *= i

    return f

n = int(input())
print(fac(n))

Python: n = int(input())

fac = 1

for i in range(1, n + 1):
    fac *= i

print(fac)

Python: n = int(input())
s = 1
for i in range(1,n+1):
    s=s*i
print(s)

Python: import math

n = int(input())
print(math.factorial(n))

Python: from math import factorical
print(factorical(int(input())))

Python: from math import factorial
print(factorial(int(input())))

Python: n = int(input())
ans = 1

for i in range(1, n + 1) :
    ans *= i
    
print(ans)

Python: def f(x): return 1 if x<2 else x*f(x-1)
print(f(int(input())))

C++: 
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <stack>
#include <cctype>
#include <complex>
#include <vector>
#include <algorithm>

using namespace std;


bool solve(){

	int n;
	cin>>n;
	long ans=1;
	for(int i=2;i<=n;i++){
		ans *= i;
	}
	cout<< ans<< endl;
	return true;
}

int main(){
	cout.setf(ios::fixed);
	cout.precision(10);
	solve();

	return 0;
}

C++: #include<stdio.h>
int main(){
	int a;
	scanf("%d",&a);
	long long int b=1;
	for(int i=0;i<a;)b*=++i;
	printf("%lld\n",b);
}

C++: #include<iostream>
using namespace std;

int main(){
	int n, i;
	long ans = 1;
	cin >> n;
	for(i=1;i<=n;i++){
		ans *= i;
	}
	cout << ans << endl;
	return 0;
}

C++: #include<iostream>
using namespace std;
int main(){
	int n,i,sum=1;
	cin>>n;
	for(i=1;i<=n;i++){
		sum=sum*i;
	}
	cout<<sum<<endl;
	return 0;
}