#P0885. 复印任务单

复印任务单

题目背景

学校资料室有一种自动复印任务单。每张任务单刚进入系统时需要先进行准备,准备完成后才会开始派生新的任务单。

在第 00 小时时,系统中有且仅有 11 张刚刚出现的任务单。老师想知道,经过 nn 个小时后,系统中共有多少张任务单。

题目描述

每张任务单从出现时开始计时,刚出现时的存在时间记为 00 小时。

每经过一个小时,系统按照以下规则处理所有任务单:

  • 存在时间为 00 小时或 11 小时的任务单只进行准备,不会产生新的任务单;
  • 存在时间为 22 小时或 33 小时的任务单会产生 22 张新的任务单;
  • 每个小时结束时,原有任务单的存在时间增加 11 小时;
  • 当一张任务单的存在时间达到 44 小时时,它会在完成本小时的派生后立即从系统中移除;
  • 本小时新产生的任务单存在时间记为 00 小时,并且不会在产生它的同一个小时继续派生新的任务单。

也就是说,每张任务单会分别在其出现后的第 33 小时和第 44 小时各产生 22 张新任务单,并在第 44 小时产生新任务单后被移除。

请计算经过 nn 小时后,系统中任务单的数量。由于答案可能很大,只需要输出答案对 2147483621474836 取模后的结果。

输入格式

输入一行一个整数 nn,表示经过的小时数。

输出格式

输出一行一个整数,表示经过 nn 小时后系统中的任务单数量对 2147483621474836 取模后的结果。

样例

2
1
4
4
7
14

样例说明

对于样例 11,初始任务单在前两个小时内只进行准备,不会产生新的任务单,因此经过 22 小时后,系统中仍然只有 11 张任务单。

对于样例 22,任务单在各个时刻的数量如下表所示。表中的“存在 xx 小时”表示已经在系统中完整存在了 xx 个小时的任务单数量。

经过时间 存在 00 小时 存在 11 小时 存在 22 小时 存在 33 小时 本小时发生的变化 系统总数
00 小时 11 0 0 00 00 系统中初始有 11 张任务单 11
11 小时 00 11 00 0 0 初始任务单完成第 11 小时的准备 1 1
22 小时 0 0 0 0 11 00 初始任务单完成第 22 小时的准备 11
33 小时 22 0 0 00 11 初始任务单产生 22 张新任务单 33
44 小时 22 22 0 0 00 初始任务单再次产生 22 张新任务单,随后被移除 44

第 44 小时结束时,第 33 小时产生的 22 张任务单已经存在 11 小时,第 44 小时又产生了 22 张新任务单,而最初的任务单已经被移除,因此系统中共有 44 张任务单。

数据范围

对于 6060% 的数据,保证 1≤n≤301\le n\le30。

对于另外 2020% 的数据,保证 31≤n<11031\le n<110。

对于全部数据,保证 1≤n<1501\le n<150。