0_0_38113713_22546.cpp:29:31: error: template declaration of 'constexpr const T INF'
template<class T> constexpr T INF = std::numeric_limits<T>::max() / 2 - 5;
^
0_0_38113713_22546.cpp:30:31: error: template declaration of 'constexpr const T NINF'
template<class T> constexpr T NINF = std::numeric_limits<T>::min() / 2 + 5;
^
0_0_38113713_22546.cpp:36:64: error: 'Add' function uses 'auto' type specifier without trailing return type
template<class T, class U> inline auto Add(T a, const U & b) { a += b; while (a >= Mod) a -= Mod; while (a < 0) a += Mod; return a; }
^
0_0_38113713_22546.cpp:36:64: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp:37:50: error: 'Add' function uses 'auto' type specifier without trailing return type
template<class T> inline auto Add(const T & a) { return Add(a, 0); }
^
0_0_38113713_22546.cpp:37:50: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp:38:108: error: 'Add' function uses 'auto' type specifier without trailing return type
template<class T, class U, class...Args> inline auto Add(const T & a, const U & b, const Args & ...args) { return (Add(Add(a, b), args...)); }
^
0_0_38113713_22546.cpp:38:108: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp:39:105: error: 'cAdd' function uses 'auto' type specifier without trailing return type
template<class T, class U, class...Args> inline auto & cAdd(T & a, const U & b, const Args & ...args) { return (a = Add(a, b, args...)); }
^
0_0_38113713_22546.cpp:39:105: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp:41:72: error: 'Mul' function uses 'auto' type specifier without trailing return type
template<class T, class U> inline auto Mul(const T & a, const U & b) { return (1ll * a * b % Mod); }
^
0_0_38113713_22546.cpp:41:72: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp:42:108: error: 'Mul' function uses 'auto' type specifier without trailing return type
template<class T, class U, class...Args> inline auto Mul(const T & a, const U & b, const Args & ...args) { return (Mul(Mul(a, b), args...)); }
^
0_0_38113713_22546.cpp:42:108: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp:43:105: error: 'cMul' function uses 'auto' type specifier without trailing return type
template<class T, class U, class...Args> inline auto & cMul(T & a, const U & b, const Args & ...args) { return (a = Mul(a, b, args...)); }
^
0_0_38113713_22546.cpp:43:105: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp:46:30: error: 'qPow' function uses 'auto' type specifier without trailing return type
inline auto qPow(T a, U b) {
^
0_0_38113713_22546.cpp:46:30: note: deduced return type only available with -std=c++1y or -std=gnu++1y
0_0_38113713_22546.cpp: In function 'int C(int, int)':
0_0_38113713_22546.cpp:59:56: error: invalid use of 'auto'
return (n < m) ? 0 : Mul(fac[n], inv[m], inv[n - m]);
^
0_0_38113713_22546.cpp: In function 'void init(int)':
0_0_38113713_22546.cpp:65:35: error: invalid use of 'auto'
fac[i] = Mul(fac[i - 1], i);
^
0_0_38113713_22546.cpp:67:34: error: invalid use of 'auto'
inv[n] = qPow(fac[n], Mod - 2);
^
0_0_38113713_22546.cpp:69:39: error: invalid use of 'auto'
inv[i] = Mul(inv[i + 1], i + 1);
^
0_0_38113713_22546.cpp: In function 'int dfs(int)':
0_0_38113713_22546.cpp:90:45: error: invalid use of 'auto'
return Mul(res, C(siz[x] - 1, siz[l[x]]));
^
0_0_38113713_22546.cpp: In function 'void solve(int)':
0_0_38113713_22546.cpp:117:55: error: invalid use of 'auto'
printf("%d\n", (int)Mul(n, inv[2], inv[n], dfs(rt)));
^
0_0_38113713_22546.cpp: In instantiation of 'auto Modulo::Mul(const T&, const U&, const Args& ...) [with T = int; U = int; Args = {int}]':
0_0_38113713_22546.cpp:59:56: required from here
0_0_38113713_22546.cpp:42:132: error: invalid use of 'auto'
template<class T, class U, class...Args> inline auto Mul(const T & a, const U & b, const Args & ...args) { return (Mul(Mul(a, b), args...)); }
^
0_0_38113713_22546.cpp: In instantiation of 'auto Modulo::Mul(const T&, const U&, const Args& ...) [with T = int; U = int; Args = {int, int}]':
0_0_38113713_22546.cpp:117:55: required from here
0_0_38113713_22546.cpp:42:142: error: invalid use of 'auto'
template<class T, class U, class...Args> inline auto Mul(const T & a, const U & b, const Args & ...args) { return (Mul(Mul(a, b), args...)); }
^
0_0_38113713_22546.cpp: In instantiation of 'auto Modulo::Mul(const T&, const U&, const Args& ...) [with T = long long int; U = int; Args = {int}]':
0_0_38113713_22546.cpp:42:142: required from 'auto Modulo::Mul(const T&, const U&, const Args& ...) [with T = int; U = int; Args = {int, int}]'
0_0_38113713_22546.cpp:117:55: required from here
0_0_38113713_22546.cpp:42:132: error: invalid use of 'auto'
template<class T, class U, class...Args> inline auto Mul(const T & a, const U & b, const Args & ...args) { return (Mul(Mul(a, b), args...)); }
^
|