using System; using System.Collections.Generic; using System.Linq; class Solution { static Dictionary<ulong, ulong> memo = new Dictionary<ulong, ulong>(); static ulong GetFib(ulong n, ulong m) { if (n == 1) { return 0; } if (n == 2) { return 1 % m; } if (memo.ContainsKey(n)) { return memo[n]; } var fib = (GetFib(n - 1, m) + GetFib(n - 2, m)) % m; memo[n] = fib; return fib; } static void Main() { var vals = Console.ReadLine().Split(' ').Select(ulong.Parse).ToArray(); var n = vals[0]; var m = vals[1]; Console.WriteLine(GetFib(n, m)); } }