using System;
using System.Runtime.InteropServices;
class CodeIQ2549{
const int bufsiz=32;
//MacPorts
//const string libgmp="/opt/local/lib/libgmp.dylib";
//ideone
const string libgmp="/usr/lib/i386-linux-gnu/libgmp.so.10";
//paiza.io/atcoder
//const string libgmp="/usr/lib/x86_64-linux-gnu/libgmp.so.10";
//wandbox/yukicoder
//const string libgmp="/usr/lib64/libgmp.so.10";
//AOJ
//const string libgmp="/usr/lib64/libgmp.so.3";
[DllImport("msvcrt",CallingConvention=CallingConvention.Cdecl)]static extern int write(int x,string y,int z);
[DllImport
("msvcrt",CallingConvention
=CallingConvention.
Cdecl)]static extern IntPtr
fopen(string x
,string y
); [DllImport
("msvcrt",CallingConvention
=CallingConvention.
Cdecl)]static extern int fflush(IntPtr x
); [DllImport
("msvcrt",CallingConvention
=CallingConvention.
Cdecl)]static extern int puts(string x
); [DllImport
("msvcrt",CallingConvention
=CallingConvention.
Cdecl)]static extern int system(string x
);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_init(IntPtr x);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_clear(IntPtr x);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_out_str(IntPtr x,int y,IntPtr z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_set_str(IntPtr x,string y,int z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_set(IntPtr x,IntPtr y);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_set_si(IntPtr x,long y);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern int __gmpz_cmp_si(IntPtr x,long y);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_add(IntPtr x,IntPtr y,IntPtr z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_sub(IntPtr x,IntPtr y,IntPtr z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_mul(IntPtr x,IntPtr y,IntPtr z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_tdiv_q(IntPtr x,IntPtr y,IntPtr z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_tdiv_r(IntPtr x,IntPtr y,IntPtr z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_add_ui(IntPtr x,IntPtr y,long z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_sub_ui(IntPtr x,IntPtr y,long z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_mul_ui(IntPtr x,IntPtr y,long z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_tdiv_q_ui(IntPtr x,IntPtr y,long z);
[DllImport(libgmp,CallingConvention=CallingConvention.Cdecl)]static extern void __gmpz_tdiv_r_ui(IntPtr x,IntPtr y,long z);
static void mul(IntPtr a1,IntPtr b1,IntPtr c1,IntPtr d1,IntPtr a2,IntPtr b2,IntPtr c2,IntPtr d2){
IntPtr a0=Marshal.AllocHGlobal(bufsiz);__gmpz_init(a0);
IntPtr b0=Marshal.AllocHGlobal(bufsiz);__gmpz_init(b0);
IntPtr c0=Marshal.AllocHGlobal(bufsiz);__gmpz_init(c0);
IntPtr d0=Marshal.AllocHGlobal(bufsiz);__gmpz_init(d0);
IntPtr t=Marshal.AllocHGlobal(bufsiz);__gmpz_init(t);
IntPtr u=Marshal.AllocHGlobal(bufsiz);__gmpz_init(u);
__gmpz_mul(t,a1,a2);
__gmpz_mul(u,b1,c2);
__gmpz_add(a0,t,u);
__gmpz_mul(t,a1,b2);
__gmpz_mul(u,b1,d2);
__gmpz_add(b0,t,u);
__gmpz_mul(t,c1,a2);
__gmpz_mul(u,d1,c2);
__gmpz_add(c0,t,u);
__gmpz_mul(t,c1,b2);
__gmpz_mul(u,d1,d2);
__gmpz_add(d0,t,u);
__gmpz_set(a1,a0);
__gmpz_set(b1,b0);
__gmpz_set(c1,c0);
__gmpz_set(d1,d0);
__gmpz_clear(a0);Marshal.FreeHGlobal(a0);
__gmpz_clear(b0);Marshal.FreeHGlobal(b0);
__gmpz_clear(c0);Marshal.FreeHGlobal(c0);
__gmpz_clear(d0);Marshal.FreeHGlobal(d0);
__gmpz_clear(t);Marshal.FreeHGlobal(t);
__gmpz_clear(u);Marshal.FreeHGlobal(u);
}
static void Main(){
IntPtr stdout
=fopen("/dev/stdout","w");
IntPtr a1=Marshal.AllocHGlobal(bufsiz);__gmpz_init(a1);
IntPtr b1=Marshal.AllocHGlobal(bufsiz);__gmpz_init(b1);
IntPtr c1=Marshal.AllocHGlobal(bufsiz);__gmpz_init(c1);
IntPtr d1=Marshal.AllocHGlobal(bufsiz);__gmpz_init(d1);
IntPtr a2=Marshal.AllocHGlobal(bufsiz);__gmpz_init(a2);
IntPtr b2=Marshal.AllocHGlobal(bufsiz);__gmpz_init(b2);
IntPtr c2=Marshal.AllocHGlobal(bufsiz);__gmpz_init(c2);
IntPtr d2=Marshal.AllocHGlobal(bufsiz);__gmpz_init(d2);
__gmpz_set_si(a1,1);
__gmpz_set_si(b1,0);
__gmpz_set_si(c1,0);
__gmpz_set_si(d1,1);
__gmpz_set_si(a2,1);
__gmpz_set_si(b2,1);
__gmpz_set_si(c2,1);
__gmpz_set_si(d2,0);
int N=int.Parse(Console.ReadLine());
N=(N+3)/2*2;
for(;N>0;N>>=1){
if((N&1)>0)mul(a1,b1,c1,d1,a2,b2,c2,d2);
mul(a2,b2,c2,d2,a2,b2,c2,d2);
}
__gmpz_sub_ui(c1,c1,1);
__gmpz_out_str(stdout,10,c1);
__gmpz_clear(a1);Marshal.FreeHGlobal(a1);
__gmpz_clear(b1);Marshal.FreeHGlobal(b1);
__gmpz_clear(c1);Marshal.FreeHGlobal(c1);
__gmpz_clear(d1);Marshal.FreeHGlobal(d1);
__gmpz_clear(a2);Marshal.FreeHGlobal(a2);
__gmpz_clear(b2);Marshal.FreeHGlobal(b2);
__gmpz_clear(c2);Marshal.FreeHGlobal(c2);
__gmpz_clear(d2);Marshal.FreeHGlobal(d2);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXM7CgpjbGFzcyBDb2RlSVEyNTQ5ewoJY29uc3QgaW50IGJ1ZnNpej0zMjsKCgkvL01hY1BvcnRzCgkvL2NvbnN0IHN0cmluZyBsaWJnbXA9Ii9vcHQvbG9jYWwvbGliL2xpYmdtcC5keWxpYiI7CgkvL2lkZW9uZQoJY29uc3Qgc3RyaW5nIGxpYmdtcD0iL3Vzci9saWIvaTM4Ni1saW51eC1nbnUvbGliZ21wLnNvLjEwIjsKCS8vcGFpemEuaW8vYXRjb2RlcgoJLy9jb25zdCBzdHJpbmcgbGliZ21wPSIvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmdtcC5zby4xMCI7CgkvL3dhbmRib3gveXVraWNvZGVyCgkvL2NvbnN0IHN0cmluZyBsaWJnbXA9Ii91c3IvbGliNjQvbGliZ21wLnNvLjEwIjsKCS8vQU9KCgkvL2NvbnN0IHN0cmluZyBsaWJnbXA9Ii91c3IvbGliNjQvbGliZ21wLnNvLjMiOwoKCVtEbGxJbXBvcnQoIm1zdmNydCIsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gaW50IHdyaXRlKGludCB4LHN0cmluZyB5LGludCB6KTsKCVtEbGxJbXBvcnQoIm1zdmNydCIsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gSW50UHRyIGZvcGVuKHN0cmluZyB4LHN0cmluZyB5KTsKCVtEbGxJbXBvcnQoIm1zdmNydCIsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gaW50IGZmbHVzaChJbnRQdHIgeCk7CglbRGxsSW1wb3J0KCJtc3ZjcnQiLENhbGxpbmdDb252ZW50aW9uPUNhbGxpbmdDb252ZW50aW9uLkNkZWNsKV1zdGF0aWMgZXh0ZXJuIGludCBwdXRzKHN0cmluZyB4KTsKCVtEbGxJbXBvcnQoIm1zdmNydCIsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gaW50IHN5c3RlbShzdHJpbmcgeCk7CgoJW0RsbEltcG9ydChsaWJnbXAsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gdm9pZCBfX2dtcHpfaW5pdChJbnRQdHIgeCk7CglbRGxsSW1wb3J0KGxpYmdtcCxDYWxsaW5nQ29udmVudGlvbj1DYWxsaW5nQ29udmVudGlvbi5DZGVjbCldc3RhdGljIGV4dGVybiB2b2lkIF9fZ21wel9jbGVhcihJbnRQdHIgeCk7CglbRGxsSW1wb3J0KGxpYmdtcCxDYWxsaW5nQ29udmVudGlvbj1DYWxsaW5nQ29udmVudGlvbi5DZGVjbCldc3RhdGljIGV4dGVybiB2b2lkIF9fZ21wel9vdXRfc3RyKEludFB0ciB4LGludCB5LEludFB0ciB6KTsKCVtEbGxJbXBvcnQobGliZ21wLENhbGxpbmdDb252ZW50aW9uPUNhbGxpbmdDb252ZW50aW9uLkNkZWNsKV1zdGF0aWMgZXh0ZXJuIHZvaWQgX19nbXB6X3NldF9zdHIoSW50UHRyIHgsc3RyaW5nIHksaW50IHopOwoJW0RsbEltcG9ydChsaWJnbXAsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gdm9pZCBfX2dtcHpfc2V0KEludFB0ciB4LEludFB0ciB5KTsKCVtEbGxJbXBvcnQobGliZ21wLENhbGxpbmdDb252ZW50aW9uPUNhbGxpbmdDb252ZW50aW9uLkNkZWNsKV1zdGF0aWMgZXh0ZXJuIHZvaWQgX19nbXB6X3NldF9zaShJbnRQdHIgeCxsb25nIHkpOwoJW0RsbEltcG9ydChsaWJnbXAsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gaW50ICBfX2dtcHpfY21wX3NpKEludFB0ciB4LGxvbmcgeSk7CgoJW0RsbEltcG9ydChsaWJnbXAsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gdm9pZCBfX2dtcHpfYWRkKEludFB0ciB4LEludFB0ciB5LEludFB0ciB6KTsKCVtEbGxJbXBvcnQobGliZ21wLENhbGxpbmdDb252ZW50aW9uPUNhbGxpbmdDb252ZW50aW9uLkNkZWNsKV1zdGF0aWMgZXh0ZXJuIHZvaWQgX19nbXB6X3N1YihJbnRQdHIgeCxJbnRQdHIgeSxJbnRQdHIgeik7CglbRGxsSW1wb3J0KGxpYmdtcCxDYWxsaW5nQ29udmVudGlvbj1DYWxsaW5nQ29udmVudGlvbi5DZGVjbCldc3RhdGljIGV4dGVybiB2b2lkIF9fZ21wel9tdWwoSW50UHRyIHgsSW50UHRyIHksSW50UHRyIHopOwoJW0RsbEltcG9ydChsaWJnbXAsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gdm9pZCBfX2dtcHpfdGRpdl9xKEludFB0ciB4LEludFB0ciB5LEludFB0ciB6KTsKCVtEbGxJbXBvcnQobGliZ21wLENhbGxpbmdDb252ZW50aW9uPUNhbGxpbmdDb252ZW50aW9uLkNkZWNsKV1zdGF0aWMgZXh0ZXJuIHZvaWQgX19nbXB6X3RkaXZfcihJbnRQdHIgeCxJbnRQdHIgeSxJbnRQdHIgeik7CglbRGxsSW1wb3J0KGxpYmdtcCxDYWxsaW5nQ29udmVudGlvbj1DYWxsaW5nQ29udmVudGlvbi5DZGVjbCldc3RhdGljIGV4dGVybiB2b2lkIF9fZ21wel9hZGRfdWkoSW50UHRyIHgsSW50UHRyIHksbG9uZyB6KTsKCVtEbGxJbXBvcnQobGliZ21wLENhbGxpbmdDb252ZW50aW9uPUNhbGxpbmdDb252ZW50aW9uLkNkZWNsKV1zdGF0aWMgZXh0ZXJuIHZvaWQgX19nbXB6X3N1Yl91aShJbnRQdHIgeCxJbnRQdHIgeSxsb25nIHopOwoJW0RsbEltcG9ydChsaWJnbXAsQ2FsbGluZ0NvbnZlbnRpb249Q2FsbGluZ0NvbnZlbnRpb24uQ2RlY2wpXXN0YXRpYyBleHRlcm4gdm9pZCBfX2dtcHpfbXVsX3VpKEludFB0ciB4LEludFB0ciB5LGxvbmcgeik7CglbRGxsSW1wb3J0KGxpYmdtcCxDYWxsaW5nQ29udmVudGlvbj1DYWxsaW5nQ29udmVudGlvbi5DZGVjbCldc3RhdGljIGV4dGVybiB2b2lkIF9fZ21wel90ZGl2X3FfdWkoSW50UHRyIHgsSW50UHRyIHksbG9uZyB6KTsKCVtEbGxJbXBvcnQobGliZ21wLENhbGxpbmdDb252ZW50aW9uPUNhbGxpbmdDb252ZW50aW9uLkNkZWNsKV1zdGF0aWMgZXh0ZXJuIHZvaWQgX19nbXB6X3RkaXZfcl91aShJbnRQdHIgeCxJbnRQdHIgeSxsb25nIHopOwoKCXN0YXRpYyB2b2lkIG11bChJbnRQdHIgYTEsSW50UHRyIGIxLEludFB0ciBjMSxJbnRQdHIgZDEsSW50UHRyIGEyLEludFB0ciBiMixJbnRQdHIgYzIsSW50UHRyIGQyKXsKCQlJbnRQdHIgYTA9TWFyc2hhbC5BbGxvY0hHbG9iYWwoYnVmc2l6KTtfX2dtcHpfaW5pdChhMCk7CgkJSW50UHRyIGIwPU1hcnNoYWwuQWxsb2NIR2xvYmFsKGJ1ZnNpeik7X19nbXB6X2luaXQoYjApOwoJCUludFB0ciBjMD1NYXJzaGFsLkFsbG9jSEdsb2JhbChidWZzaXopO19fZ21wel9pbml0KGMwKTsKCQlJbnRQdHIgZDA9TWFyc2hhbC5BbGxvY0hHbG9iYWwoYnVmc2l6KTtfX2dtcHpfaW5pdChkMCk7CgkJSW50UHRyIHQ9TWFyc2hhbC5BbGxvY0hHbG9iYWwoYnVmc2l6KTtfX2dtcHpfaW5pdCh0KTsKCQlJbnRQdHIgdT1NYXJzaGFsLkFsbG9jSEdsb2JhbChidWZzaXopO19fZ21wel9pbml0KHUpOwoKCQlfX2dtcHpfbXVsKHQsYTEsYTIpOwoJCV9fZ21wel9tdWwodSxiMSxjMik7CgkJX19nbXB6X2FkZChhMCx0LHUpOwoJCV9fZ21wel9tdWwodCxhMSxiMik7CgkJX19nbXB6X211bCh1LGIxLGQyKTsKCQlfX2dtcHpfYWRkKGIwLHQsdSk7CgkJX19nbXB6X211bCh0LGMxLGEyKTsKCQlfX2dtcHpfbXVsKHUsZDEsYzIpOwoJCV9fZ21wel9hZGQoYzAsdCx1KTsKCQlfX2dtcHpfbXVsKHQsYzEsYjIpOwoJCV9fZ21wel9tdWwodSxkMSxkMik7CgkJX19nbXB6X2FkZChkMCx0LHUpOwoKCQlfX2dtcHpfc2V0KGExLGEwKTsKCQlfX2dtcHpfc2V0KGIxLGIwKTsKCQlfX2dtcHpfc2V0KGMxLGMwKTsKCQlfX2dtcHpfc2V0KGQxLGQwKTsKCgkJX19nbXB6X2NsZWFyKGEwKTtNYXJzaGFsLkZyZWVIR2xvYmFsKGEwKTsKCQlfX2dtcHpfY2xlYXIoYjApO01hcnNoYWwuRnJlZUhHbG9iYWwoYjApOwoJCV9fZ21wel9jbGVhcihjMCk7TWFyc2hhbC5GcmVlSEdsb2JhbChjMCk7CgkJX19nbXB6X2NsZWFyKGQwKTtNYXJzaGFsLkZyZWVIR2xvYmFsKGQwKTsKCQlfX2dtcHpfY2xlYXIodCk7TWFyc2hhbC5GcmVlSEdsb2JhbCh0KTsKCQlfX2dtcHpfY2xlYXIodSk7TWFyc2hhbC5GcmVlSEdsb2JhbCh1KTsKCX0KCglzdGF0aWMgdm9pZCBNYWluKCl7CgkJSW50UHRyIHN0ZG91dD1mb3BlbigiL2Rldi9zdGRvdXQiLCJ3Iik7CgoJCUludFB0ciBhMT1NYXJzaGFsLkFsbG9jSEdsb2JhbChidWZzaXopO19fZ21wel9pbml0KGExKTsKCQlJbnRQdHIgYjE9TWFyc2hhbC5BbGxvY0hHbG9iYWwoYnVmc2l6KTtfX2dtcHpfaW5pdChiMSk7CgkJSW50UHRyIGMxPU1hcnNoYWwuQWxsb2NIR2xvYmFsKGJ1ZnNpeik7X19nbXB6X2luaXQoYzEpOwoJCUludFB0ciBkMT1NYXJzaGFsLkFsbG9jSEdsb2JhbChidWZzaXopO19fZ21wel9pbml0KGQxKTsKCQlJbnRQdHIgYTI9TWFyc2hhbC5BbGxvY0hHbG9iYWwoYnVmc2l6KTtfX2dtcHpfaW5pdChhMik7CgkJSW50UHRyIGIyPU1hcnNoYWwuQWxsb2NIR2xvYmFsKGJ1ZnNpeik7X19nbXB6X2luaXQoYjIpOwoJCUludFB0ciBjMj1NYXJzaGFsLkFsbG9jSEdsb2JhbChidWZzaXopO19fZ21wel9pbml0KGMyKTsKCQlJbnRQdHIgZDI9TWFyc2hhbC5BbGxvY0hHbG9iYWwoYnVmc2l6KTtfX2dtcHpfaW5pdChkMik7CgoJCV9fZ21wel9zZXRfc2koYTEsMSk7CgkJX19nbXB6X3NldF9zaShiMSwwKTsKCQlfX2dtcHpfc2V0X3NpKGMxLDApOwoJCV9fZ21wel9zZXRfc2koZDEsMSk7CgkJX19nbXB6X3NldF9zaShhMiwxKTsKCQlfX2dtcHpfc2V0X3NpKGIyLDEpOwoJCV9fZ21wel9zZXRfc2koYzIsMSk7CgkJX19nbXB6X3NldF9zaShkMiwwKTsKCgkJaW50IE49aW50LlBhcnNlKENvbnNvbGUuUmVhZExpbmUoKSk7CgkJTj0oTiszKS8yKjI7CgkJZm9yKDtOPjA7Tj4+PTEpewoJCQlpZigoTiYxKT4wKW11bChhMSxiMSxjMSxkMSxhMixiMixjMixkMik7CgkJCW11bChhMixiMixjMixkMixhMixiMixjMixkMik7CgkJfQoJCV9fZ21wel9zdWJfdWkoYzEsYzEsMSk7CgkJX19nbXB6X291dF9zdHIoc3Rkb3V0LDEwLGMxKTsKCQlwdXRzKCIiKTsKCQlmZmx1c2goc3Rkb3V0KTsKCgkJX19nbXB6X2NsZWFyKGExKTtNYXJzaGFsLkZyZWVIR2xvYmFsKGExKTsKCQlfX2dtcHpfY2xlYXIoYjEpO01hcnNoYWwuRnJlZUhHbG9iYWwoYjEpOwoJCV9fZ21wel9jbGVhcihjMSk7TWFyc2hhbC5GcmVlSEdsb2JhbChjMSk7CgkJX19nbXB6X2NsZWFyKGQxKTtNYXJzaGFsLkZyZWVIR2xvYmFsKGQxKTsKCQlfX2dtcHpfY2xlYXIoYTIpO01hcnNoYWwuRnJlZUhHbG9iYWwoYTIpOwoJCV9fZ21wel9jbGVhcihiMik7TWFyc2hhbC5GcmVlSEdsb2JhbChiMik7CgkJX19nbXB6X2NsZWFyKGMyKTtNYXJzaGFsLkZyZWVIR2xvYmFsKGMyKTsKCQlfX2dtcHpfY2xlYXIoZDIpO01hcnNoYWwuRnJlZUhHbG9iYWwoZDIpOwoJfQp9