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))
}

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

int main(void){
  unsigned long n;
  cin >> n;
  for(int i = n; i > 2; i--){
    n = n * (i - 1);
  }
  cout << n << endl;
  return 0;
}

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

int main()
{
	int n;
	cin >> n;
	long long ans = 1;
	do
	{
		ans *= n;
	} while (--n);
	cout << ans << endl;
	return 0;
}

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

int main(){
  int n,i,ans;

  while(cin >> n){

  ans=1;
  for(i=0;i<n;i++){
    ans=ans*(n-i);

  }
 
    cout << ans << endl;
  }

}

C++: #include <iostream>
#include <limits.h>

using namespace std;

void solve()
{
	unsigned long long int ans = 1;
	int n;
	cin >> n;
	for(int i = 1; i <= n; ++i)
	{
		ans *= i;
	}
	cout << ans << endl;
}

int main()
{
	solve();
	return(0);
}

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

using lint = long long;

lint factorial(lint n){
    if(n == (lint)0){
        return (lint)1;
    }

    return n * factorial(n - 1);
}

int main(){
    lint n;
    cin >> n;
    cout << factorial(n) << endl;

    return 0;
}

C++: #include<stdio.h>
int fact(int n){
    if(n>1)
    return n*fact(n-1);
    return 1;
}
main(){
    int x;
    scanf("%d",&x);
    printf("%d\n",fact(x));
}

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

int main(void){
  int n;
  cin >> n;
  for(int i = n; i > 2; i--){
    n = n * (i - 1);
  }
  cout << n << endl;
  return 0;
}

C++: #include <iostream>
using namespace std;
int main( void )
{
	while ( !cin.eof() )
	{
		int n;
		cin >> n;
		if ( cin.eof() )
			break;

		int f = 1;
		for ( int i = 2; i <= n; i++ )
		{
			f *= i;
		}

		cout << f << endl;
	}

}

C++: #include <cstdio>
#include <cstring>
#include <algorithm>
#include <functional>
using namespace std;

int main() {
	int n; scanf("%d",&n);
	long long x = 1;
	while(n>1)x*=n--;
	printf("%lld\n",x);
	return 0;
}

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

int main() {
	ios :: sync_with_stdio(false);
	int n; cin >> n;
	long long ans = 1;
	for(int i = 1; i <= n; i ++)
		ans *= i;
	cout << ans << '\n';
	return 0;
}

C++: #include<iostream>

int factorial(int n){
    if(n==0) return 1;
    return n*factorial(n-1);
}

int main(void){
    int n;
    std::cin>>n;
    std::cout<<factorial(n)<<std::endl;
    return 0;
}

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

int fact(int n) {
  if(n == 0) return 1;
  return n*fact(n-1);
}

int main(void) {
  int n;
  
  cin >> n;
  cout << fact(n) << endl;
  
  return 0;
}

C++: #include <iostream>
#include<string>
#include<math.h>
using namespace std;

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

C++: #include<iostream>
#include<stdio.h>
using namespace std;
long long factorial(int D) {
	return (D > 0 ? D*factorial(D - 1) : 1);
}
int main() {
	int n;
	cin >> n;
	cout << factorial(n) << endl;
	return 0;
}

C++: #include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
int main(){
    ll n,ans=1;
    cin >> n;
    while(n--){
        ans*=n;
    }
    cout << n << endl;
    return 0;
}

C++: #include <stdio.h>
int main()
{
    int n, count;
   unsigned long long int factorial=1;
   while(scanf("%d",&n)==1)
{
     if ( n== 0)
     printf("1\n");
     else
     {
         factorial=1;

         for(count=1;count<=n;++count)
     { factorial*=count;}
      printf("%llu\n",factorial);
      }

      }
      return 0;
       }

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

unsigned long int fact(unsigned long int n)
{
	if(n==0 || n==1)
		return 1;
	return n*fact(n-1);
}

int main()
{
	unsigned long int n;
	while(cin >> n)
		cout << fact(n) << endl;
	return 0;
}

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

int main(){
  int n,c=1;
  cin>>n;
  if(n==0)cout<<0<<endl;
  else{
    for(int i=n;i>0;i--)
      c*=i;
    cout<<c<<endl;
  }
  return 0;
}

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

int main()
{
int x,y;
while(cin>>x)
{
for(int i=1;i<=x;i++)
y=x*i;
cout<<y<<endl;
}
return 0;
}

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

int fact(int n){
  if(n==2) return 2;
  else return n*fact(n-1);
}

int main()
{
  int n,f;
  cin >> n;
  f=fact(n);
  cout << f << endl;
  return 0;
}

C++: #include <iostream>
#include <iomanip>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <bitset>
#include <stack>
#include <utility>
#include <numeric>
#include <algorithm>
#include <functional>
#include <complex>
#include <string>
#include <sstream>

#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cstring>

using namespace std;

#define all(c) c.begin(),c.end()
#define rep(i,n) for(int i=0;i<(int)n;i++)
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << endl

typedef long long ll;
typedef vector<int> vi;

template<typename T>
ostream& operator<<(ostream& os,const vector<T>& val){
    os << "[ ";
    for(typename vector<T>::const_iterator it=val.begin();
        it != val.end();++it){
        os << *it << " ";
    }
    os << "]";
    return os;
}

ll fact(ll n){
    if(n == 1) return 1;
    else return n * fact(n-1);
}

int main(){
    int n;
    cin >> n;
    cout << fact(n) << endl;
    return 0;
}

C++: #include <cstdio>

using namespace std;

int main() {
    int n;
    scanf("%d", &n);

    long long res=1;
    for (int i=1; i<=n; ++i)
        res *= i;

    printf("%lld\n", res);
    return 0;
}

C++: #include <iostream>

using namespace std;

int main() {
	int n;
	unsigned long long int re = 1;
	
	cin >> n;
	while(n >= 2) {
		re *= n;
		n--;
	}
	
	cout << re << endl;
	
	return 0;
	
}#include <iostream>

using namespace std;

int main() {
	int n;
	int re = 1;
	cin >> n;
	while(n >= 2) {
		re *= n;
		n--;
	}
	
	cout << re << endl;
	
	return 0;
	
}

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

typedef long long ll;

ll memo[21];

ll fact( int n ) {
  if ( memo[n] != -1 ) return memo[n];
  if ( n <= 1 ) return 1;
  return memo[n] = n * fact(n-1);
}

int main() {
  memset(memo,-1,sizeof(memo));
  int n; cin >> n;
  ll ret = fact(n);
  cout << ret << endl;
  return 0;
}

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

int main() {
	int n,a;
	cin>>n;
	a = n;
	while(true){
		n = n-1;
		if (n == 0)break;
		a = a*n;
	}cout<<a<<endl;
}

C++: #include <iostream>
#include <string>

using namespace std;

string ns[]={"1","1","2","6","24","120","720","5040","40320","362880","3628800","39916800","479001600","6227020800","87178291200","1307674368000","20922789888000","355687428096000","6402373705728000","121645100408832000","2432902008176640000"};

int main(){
  int n;
  cin >> n;
  cout << ns[n] << endl;
}

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

C++: // Template Meta Programing
#include <iostream>
template <long long N> struct factorial {
    static const long long value = N * factorial<N-1>::value;
};
template <> struct factorial<0> {
    static const long long value = 1;
};
int main()
{
    long long n = factorial<20>::value;
    std::cout << n;
}

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

int main() {
	int x, ans=1;
	cin >> x;
	for (int i = 2; i <= x; i++) {
		ans *= i;
	}
	cout << ans;
}

C++: #include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


int fuc(int n){
	if(n==0)
		return 1;
	else
		return n*fuc(n-1);
}

int main(){

	int n;
	while(cin>>n)
		cout<<fuc(n)<<endl;


	return 0;
}