Language: C++

#include <iostream>
#include <algorithm>
#include <array>
#include <cstdint>
#include <climits>
#include <functional>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stack>
#include <stdlib.h>
#include <string>
#include <time.h>
#include <type_traits>
#include <utility>
#include <vector>

using int32 = std::int_fast32_t;
using int64 = std::int_fast64_t;
using uint32 = std::uint_fast32_t;
using uint64 = std::uint_fast64_t;
using intl32 = std::int_least32_t;
using intl64 = std::int_least64_t;
using uintl32 = std::uint_least32_t;
using uintl64 = std::uint_least64_t;

using uint = uint32;
using ll = int64;

template<uint MD>
struct ModInt {
	uint v;
	ModInt() : v{ 0 } {}
	ModInt(ll v) : v{ normS(v%MD + MD) } {}
	static uint normS(const uint &x) { return (x<MD) ? x : x - MD; };
	static ModInt make(const uint &x) { ModInt m; m.v = x; return m; }
	const ModInt operator+(const ModInt &r) const { return make(normS(v + r.v)); }
	const ModInt operator-(const ModInt &r) const { return make(normS(v + normS(MD - r.v))); }
	const ModInt operator*(const ModInt &r) const { return make((ull)v*r.v%MD); }
	ModInt& operator+=(const ModInt &r) { return *this = *this + r; }
	ModInt& operator-=(const ModInt &r) { return *this = *this - r; }
	ModInt& operator*=(const ModInt &r) { return *this = *this*r; }
	static ModInt inv(const ModInt &x) {
		return pow(ModInt(x), MD - 2);
	}
};

using mint = ModInt<1000000007>;
int main(void) {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	uint32 n;
	std::string s;
	std::cin >> n >> s;
	mint dp[5003][5003] = {};
	dp[0][0] = mint(1);
	for (uint32 i = 1;i <= n;++i) {
		dp[i][0] = dp[i - 1][1] + dp[i - 1][1] + dp[i - 1][0];
		for (uint32 j = 1;j <= i;++j) {
			dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j + 1] + dp[i - 1][j + 1];
		}
	}
	std::cout << dp[n][s.length()].v << "\n";
	return 0;
}

Compiler output:
a.cc:28:7: error: conflicting declaration 'using uint = using uint32 = uint_fast32_t'
   28 | using uint = uint32;
      |       ^~~~
In file included from /usr/include/stdlib.h:514,
                 from /usr/include/c++/14/cstdlib:79,
                 from /usr/include/c++/14/ext/string_conversions.h:43,
                 from /usr/include/c++/14/bits/basic_string.h:4154,
                 from /usr/include/c++/14/string:54,
                 from /usr/include/c++/14/bits/locale_classes.h:40,
                 from /usr/include/c++/14/bits/ios_base.h:41,
                 from /usr/include/c++/14/ios:44,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:1:
/usr/include/x86_64-linux-gnu/sys/types.h:150:22: note: previous declaration as 'typedef unsigned int uint'
  150 | typedef unsigned int uint;
      |                      ^~~~
a.cc: In member function 'const ModInt<MD> ModInt<MD>::operator*(const ModInt<MD>&) const':
a.cc:40:70: error: 'ull' was not declared in this scope; did you mean 'll'?
   40 |         const ModInt operator*(const ModInt &r) const { return make((ull)v*r.v%MD); }
      |                                                                      ^~~
      |                                                                      ll