One day, $n$ people ($n$ is an even number) met on a plaza and made two round dances, each round dance consists of exactly $\frac{n}{2}$ people. Your task is to find the number of ways $n$ people can make two round dances if each round dance consists of exactly $\frac{n}{2}$ people. Each person should belong to exactly one of these two round dances.

Round dance is a dance circle consisting of $1$ or more people. Two round dances are indistinguishable (equal) if one can be transformed to another by choosing the first participant. For example, round dances $[1, 3, 4, 2]$, $[4, 2, 1, 3]$ and $[2, 1, 3, 4]$ are indistinguishable.

For example, if $n=2$ then the number of ways is $1$: one round dance consists of the first person and the second one of the second person.

For example, if $n=4$ then the number of ways is $3$. Possible options:  one round dance — $[1,2]$, another — $[3,4]$;  one round dance — $[2,4]$, another — $[3,1]$;  one round dance — $[4,1]$, another — $[3,2]$. 

Your task is to find the number of ways $n$ people can make two round dances if each round dance consists of exactly $\frac{n}{2}$ people.


-----Input-----

The input contains one integer $n$ ($2 \le n \le 20$), $n$ is an even number.


-----Output-----

Print one integer — the number of ways to make two round dances. It is guaranteed that the answer fits in the $64$-bit integer data type.


-----Examples-----
Input
2

Output
1

Input
4

Output
3

Input
8

Output
1260

Input
20

Output
12164510040883200
[{"code": "def fac(n):\n    if n == 0:\n        return 1\n    else:\n        return n * fac(n-1)\n\n\nn = int(input())\n\nm = n // 2\n\nans = fac(n)//(2*m**2)\n\nprint(ans)\n", "passed": true, "time": 0.14, "memory": 14324.0, "status": "done"}, {"code": "def cal(k):\n    ans = 1\n    for i in range(k+1, 2*k):\n        ans *= i\n    for i in range(1, k):\n        ans //= i\n    # print(ans)\n    t = 1\n    for i in range(1, k):\n        t *= i\n    # print(t)\n    ans *= t*t\n    return ans\n\n\nprint(cal(int(input())//2))\n", "passed": true, "time": 0.18, "memory": 14092.0, "status": "done"}, {"code": "import sys\ninput = sys.stdin.readline\n\ndef main():\n    n = int(input())\n    ans = 1\n    for i in range(2, n):\n        ans *= i\n    \n    print(ans // (n // 2))\n    \n    \nmain()", "passed": true, "time": 1.58, "memory": 14136.0, "status": "done"}, {"code": "n = int(input())\nans = 1\nfor i in range(1, n):\n    ans *= i\nans //= (n // 2)\nprint(ans)", "passed": true, "time": 0.23, "memory": 14332.0, "status": "done"}, {"code": "n=int(input())\np=2\nfor i in range(1,n):\n\tp=p*i\nprint(p//n)", "passed": true, "time": 0.14, "memory": 14132.0, "status": "done"}, {"code": "n = int(input())\nans = 1\nfor i in range(1, n+1):\n    ans *= i\nprint(ans//(n*n//2))", "passed": true, "time": 0.14, "memory": 14100.0, "status": "done"}, {"code": "n=int(input())\n\nres=1\nfor i in range(n-1):\n\tres*=(i+1)\n\nres//=(n//2)\nprint(res)", "passed": true, "time": 0.15, "memory": 14212.0, "status": "done"}, {"code": "from math import factorial\n\nn = int(input())\nkek = factorial(n) // factorial(n // 2) // factorial(n // 2) // 2\nprint(kek * factorial(n // 2) * factorial(n // 2) // (n // 2) // (n // 2))", "passed": true, "time": 0.14, "memory": 14072.0, "status": "done"}, {"code": "def f(n):\n\tres = 1\n\tfor i in range(2, n + 1):\n\t\tres = res * i\n\treturn res\n\nn = int(input())\n\nif n == 2:\n\tprint(1)\nelif n == 4:\n\tprint(3)\nelse:\n\tans = f(n) // (2 * n * n)\n\tprint(ans * 4)\n", "passed": true, "time": 0.15, "memory": 14228.0, "status": "done"}, {"code": "from math import factorial as f\n\nn = int(input())\nprint(f(n) // 2 // (n // 2) // (n // 2))\n\n", "passed": true, "time": 0.18, "memory": 14212.0, "status": "done"}, {"code": "n=int(input())\nans=1\nfor i in range(1,n+1):\n    ans=ans*i\nans=ans//(n//2)\nans=ans//(n//2)\nans=ans//2\nprint(ans)", "passed": true, "time": 0.17, "memory": 14108.0, "status": "done"}, {"code": "def solve():\n\tn = int(input())\n\tn -= 2\n\tnum = 2\n\tfor i in range(1,n+2):\n\t\tnum *= i\n\tnum = num // (n+2)\n\treturn num\n\n#main\nprint(solve())", "passed": true, "time": 0.16, "memory": 14116.0, "status": "done"}, {"code": "def fact(n):\n\tft=1\n\twhile n>0:\n\t\tft=ft*n\n\t\tn=n-1\n\treturn ft\nn=int(input())\nq=2*fact(n)//(n*n)\nprint(q)\n", "passed": true, "time": 0.14, "memory": 14228.0, "status": "done"}, {"code": "def opt1(n):\n    k = n // 2\n    res = 1\n    for i in range(k + 1, n + 1):\n        res *= i\n    for i in range(2, k + 1):\n        res //= i\n    return res\ndef opt2(n):\n    res = 1\n    for i in range(1, n + 1):\n        res *= i\n    if n == 1:\n        return 1\n    if n == 2:\n        return 1\n    return res // n\nn = int(input())\nprint(opt1(n) * opt2(n // 2) * opt2(n // 2) // 2)", "passed": true, "time": 0.14, "memory": 14236.0, "status": "done"}, {"code": "n=int(input())\nf=1\nfor i in range(1,n):\n    f=f*i\nk=n//2\nans=f//k\nprint(ans)\n\n", "passed": true, "time": 0.15, "memory": 14236.0, "status": "done"}, {"code": "import sys,math,itertools\nfrom collections import Counter,deque,defaultdict\nfrom bisect import bisect_left,bisect_right \nmod = 10**9+7\nINF = float('inf')\ndef inp(): return int(sys.stdin.readline())\ndef inpl(): return list(map(int, sys.stdin.readline().split()))\n\nn = inp()\nn //= 2;n-=1\n\nprint(math.factorial(2*n+1)//(n+1))", "passed": true, "time": 0.14, "memory": 14348.0, "status": "done"}, {"code": "n = int(input())\nans = 1\nfor i in range(n):\n    ans *= i + 1\nfor i in range(n // 2):\n    ans //= i + 1\n    ans //= i + 1\ngg = 1\nfor i in range(n//2 - 1):\n    gg *= i + 1\nans *= gg * gg\nans//= 2\nprint(ans)\n", "passed": true, "time": 0.15, "memory": 14144.0, "status": "done"}, {"code": "from math import factorial\n\nn = int(input())\na = [0, 1, 3, 40, 1260, 72576, 6652800, 889574400, 163459296000, 39520825344000, 12164510040883200]\nprint(a[n // 2])\n", "passed": true, "time": 0.14, "memory": 14288.0, "status": "done"}, {"code": "n = int(input())\nf = [1]\nfor i in range(1, 21):\n    f.append(f[-1]*i)\nprint((f[n]*f[n//2 - 1]**2)//(2*f[n//2]**2))\n", "passed": true, "time": 0.16, "memory": 14136.0, "status": "done"}, {"code": "def fact(n):\n    ans = 1\n    for i in range(1, n + 1):\n        ans *= i\n    return ans\n\na = int(input())\nans = fact(a)//( fact(a//2) * fact(a//2)  )\nans *= fact(a//2 - 1)\nans *= fact(a//2 - 1)\nprint(ans//2)", "passed": true, "time": 0.15, "memory": 14084.0, "status": "done"}, {"code": "def fact(a):\n    if a == 1:\n        return 1\n    else:\n        return fact(a - 1) * a\nn = int(input())\nprint(fact(n) // fact(n // 2) // (n // 2) * (fact(n // 2) // (n // 2)) // 2)", "passed": true, "time": 0.14, "memory": 14248.0, "status": "done"}, {"code": "def fact(n) :\n    ans = 1\n    for i in range(2,n+1) : ans *= i\n    return ans\nn = int(input())//2 - 1\nprint(fact(2*n + 1)//(n + 1))\n\n", "passed": true, "time": 0.14, "memory": 14232.0, "status": "done"}, {"code": "import math\nn = int(input())\nprint(math.factorial(n) // n // (n // 2))\n", "passed": true, "time": 0.14, "memory": 14132.0, "status": "done"}, {"code": "import math\n\ndef binom(n, k):\n    return math.factorial(n) // math.factorial(k) // math.factorial(n - k)\n\n\ntt = int(input())\n\nprint(binom(tt,tt//2)*math.factorial(tt//2-1)*math.factorial(tt//2-1)//2)", "passed": true, "time": 0.14, "memory": 14328.0, "status": "done"}, {"code": "n = int(input())\nn = n // 2 - 1\nans = 1\nfor x in range(1, 2 * n + 2):\n    ans = ans * x\nprint(ans // (n + 1))\n", "passed": true, "time": 0.22, "memory": 14212.0, "status": "done"}, {"code": "n = int(input())\n\nf = 1\nfor i in range(1, n):\n    f *= i\n\nprint(f // (n // 2))\n", "passed": true, "time": 0.14, "memory": 14104.0, "status": "done"}, {"code": "n=int(input())\nt=1\nfor i in range(n):\n    t*=(i+1)\nprint(t//((n*n)//2))", "passed": true, "time": 0.23, "memory": 14276.0, "status": "done"}, {"code": "n=int(input())\ndef fact(n):\n    res=1\n    for i in range(2,n+1):\n        res*=i\n    return res;\n\nz=n//2\nans=fact(n);\np=fact(z-1);\n\nans*=p*p;\nans/= fact(z);\nans/=fact(z);\nans/=2;\nprint(int(ans))", "passed": true, "time": 0.14, "memory": 14204.0, "status": "done"}, {"code": "n = int(input())\nres = [1, 3, 40, 1260, 72576, 6652800, 889574400, 163459296000, 39520825344000, 12164510040883200]\nprint(res[n//2-1])\n", "passed": true, "time": 0.23, "memory": 14312.0, "status": "done"}, {"code": "def factorial(n):\n    if n < 0:\n        return 0\n    if n <= 1:\n        return 1\n    return n*factorial(n-1)\ndef ncr(n,r):\n    if n < 0 or r < 0 or n < r:\n        return 0\n    return factorial(n)//factorial(r)//factorial(n-r)\n\nn = int(input())\nleft_choice = ncr(n,n//2)//2\nleft = factorial(n//2)\nright = left\nleft = left//(n//2)\nright = right//(n//2)\n# print(left_choice,left,right)\nprint(left_choice*left*right)", "passed": true, "time": 0.14, "memory": 14232.0, "status": "done"}, {"code": "import sys\ninput = sys.stdin.readline\n\nret = [1, 1, 1, 1, 3, 8, 40, 180, 1260, 8064, 72576, 604800, 6652800, 68428800, 889574400, 10897286400, 163459296000, 2324754432000, 39520825344000, 640237370572800, 12164510040883200]\nprint(ret[int(input())])\n", "passed": true, "time": 0.14, "memory": 14268.0, "status": "done"}, {"code": "from math import factorial\nn = int(input())\nans = factorial(n//2 - 1) ** 2\nans *= ((factorial(n) // (factorial(n//2) ** 2))//2)\nprint(ans)", "passed": true, "time": 0.14, "memory": 14176.0, "status": "done"}, {"code": "import math\nn=int(input())\nprint(int(2*math.factorial(n-1)/n))", "passed": true, "time": 0.23, "memory": 14260.0, "status": "done"}, {"code": "from math import factorial as f\nn=int(input())\nans=f(n)//(n-n//2)//f(n//2)//2*(f(n//2-1))\nprint(ans)", "passed": true, "time": 0.14, "memory": 14216.0, "status": "done"}, {"code": "n = int(input())\nncr = 1\nfor i in range(n//2+1, n+1):\n    ncr = ncr * i\nfor i in range(1, n//2+1):\n    ncr = ncr//i\nans = ncr//2\nfmul = 1\nfor i in range(1, n//2):\n    fmul = fmul*i\nans = ans*fmul\nans = ans*fmul\nans = int(ans)\nprint(ans)\n", "passed": true, "time": 0.14, "memory": 14248.0, "status": "done"}, {"code": "from math import factorial\nn = int(input())\nprint(factorial(n)*factorial(n//2-1)**2//factorial(n//2)**2//2)\n", "passed": true, "time": 0.24, "memory": 14124.0, "status": "done"}, {"code": "a = int(input())\nfact = 1\nfor i in range(1, a):\n  fact *= i\nprint(int(fact / (a/2)))", "passed": true, "time": 0.24, "memory": 14160.0, "status": "done"}, {"code": "import sys\ninput = sys.stdin.readline\nI = lambda : list(map(int,input().split()))\n\ndef fact(n):\n\tif n<=1:\n\t\treturn 1\n\treturn n*fact(n-1)\n\nn,=I()\nprint(fact(n-1)//(n//2))", "passed": true, "time": 0.14, "memory": 14380.0, "status": "done"}, {"code": "import math\na=int(input())\nprint (int(math.factorial(a-1)/(a/2)))", "passed": true, "time": 0.14, "memory": 14372.0, "status": "done"}]