#include<iostream>
#define mod 998244353
#define int long long
using namespace std;
int flowerColorsCount;
int intermediateResults[16] = { 0, 4, 8, -1, 16, -10, 4, -12, -48, 26, -44, 15, -16, -4, -4, -1 };
int beautySums[16] = { 0, 0, 0, 24, 4, 240, 204, 1316, 2988, 6720, 26200, 50248, 174280, 436904, 1140888, 3436404 };
main() {
cin >> flowerColorsCount;
for (int colorIndex = 16; colorIndex <= flowerColorsCount; colorIndex++) {
int intermediateSum = 0;
for (int resultIndex = 0; resultIndex < 16; resultIndex++) intermediateSum = (intermediateSum + 1ll * intermediateResults[(colorIndex - resultIndex - 1) & 15] * beautySums[resultIndex] % mod) % mod;
beautySums[colorIndex & 15] = intermediateSum;
} cout << (beautySums[flowerColorsCount & 15] + mod) % mod;
}/*1694990382.9800775*/
1605B - Reverse Sort | 1607C - Minimum Extraction |
1604B - XOR Specia-LIS-t | 1606B - Update Files |
1598B - Groups | 1602B - Divine Array |
1594B - Special Numbers | 1614A - Divan and a Store |
2085. Count Common Words With One Occurrence | 2089. Find Target Indices After Sorting Array |
2090. K Radius Subarray Averages | 2091. Removing Minimum and Maximum From Array |
6. Zigzag Conversion | 1612B - Special Permutation |
1481. Least Number of Unique Integers after K Removals | 1035. Uncrossed Lines |
328. Odd Even Linked List | 1219. Path with Maximum Gold |
1268. Search Suggestions System | 841. Keys and Rooms |
152. Maximum Product Subarray | 337. House Robber III |
869. Reordered Power of 2 | 1593C - Save More Mice |
1217. Minimum Cost to Move Chips to The Same Position | 347. Top K Frequent Elements |
1503. Last Moment Before All Ants Fall Out of a Plank | 430. Flatten a Multilevel Doubly Linked List |
1290. Convert Binary Number in a Linked List to Integer | 1525. Number of Good Ways to Split a String |