Recurrence (10%)

Max Score = 100


# 0001, 2024-11-02 14:00:09, PPPxxxxxxx (30%)

#include <iostream>
using namespace std;
long long T(int n, int k){ // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n){ // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(int k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
}
long long W(int n){ // Wedderburn–Etherington Number

}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0002, 2024-11-02 14:00:23, PPPxxx---x (30%)

#include <iostream>
using namespace std;
long long T(int n, int k){ // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n){ // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(int k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
    return sum;
}
long long W(int n){ // Wedderburn–Etherington Number

}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0003, 2024-11-02 14:03:28, PPPxxx---x (30%)

#include <iostream>
using namespace std;
long long T(int n, int k){ // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n){ // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(long long k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
    return sum;
}
long long W(int n){ // Wedderburn–Etherington Number
    return 0;
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0004, 2024-11-02 14:03:44, PPPxxx---x (30%)

#include <iostream>
using namespace std;
long long T(int n, int k){ // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n){ // Schroder Number
    int sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(int k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
    return sum;
}
long long W(int n){ // Wedderburn–Etherington Number
    return 0;
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0005, 2024-11-02 14:08:27, PPPxxx---x (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(long long k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0006, 2024-11-02 14:10:40, PPPxxx---x (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    if(n>=2)for(long long k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    return 0;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0007, 2024-11-02 14:20:06, PPPxxx---x (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(int i = 1 ; i <= n-2 ; i++){
        sum += S(i) * S(n-i-1);
    }
    return sum;
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
}
}
return 0;
}
# 0008, 2024-11-02 14:26:51, PPPP--Pxxx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 0;
    if(n == 0)return 1;
    if(n == 1)return 2;
    for(int i = 1 ; i <= n-2 ; i ++){
        sum += S(i) + S(n - i - 1);
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n%2 == 0)
    {
        long long sum2 = 0;
        for(int i = 1 ; i <= n/2-1 ; i++)sum2+= W(i)*W(n-i);
        return W(n/2)*(W(n/2)+1)/2+sum2;
    }
    if(n%2 == 1)
    {   long long sum1 = 0;
        for(int i = 0 ; i <= n+1/2 - 1 ; i++)sum1+= W(i)*W(n-i);
        return sum1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0009, 2024-11-02 14:27:25, PPPP--Pxxx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 0;
    if(n == 0)return 1;
    if(n == 1)return 2;
    for(int i = 1 ; i <= n-2 ; i ++){
        sum += S(i) * S(n - i - 1);
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n%2 == 0)
    {
        long long sum2 = 0;
        for(int i = 1 ; i <= n/2-1 ; i++)sum2+= W(i)*W(n-i);
        return W(n/2)*(W(n/2)+1)/2+sum2;
    }
    if(n%2 == 1)
    {   long long sum1 = 0;
        for(int i = 0 ; i <= n+1/2 - 1 ; i++)sum1+= W(i)*W(n-i);
        return sum1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0010, 2024-11-02 14:32:18, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 0;
    if(n == 0)return 1;
    if(n == 1)return 2;
    for(int i = 1 ; i <= n-2 ; i ++){
        sum += S(i) * S(n - i - 1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n%2 == 0)
    {
        long long sum2 = W(n/2)*(W(n/2)+1)/2;
        for(int i = 1 ; i <= n/2-1 ; i++)sum2+= W(i)*W(n-i);
        return  sum2;
    }
    if(n%2 == 1)
    {   long long sum1 = 0;
        for(int i = 0 ; i <= n+1/2 - 1 ; i++)sum1+= W(i)*W(n-i);
        return sum1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0011, 2024-11-02 14:41:32, PPPxxxPPPx (60%)

#include <iostream>
using namespace std;
long long T(int n, int k){ // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n){ // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(long long k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
    return sum;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    long long sum2 = W(n/2)*(W(n/2)+1)/2;
    long long sum1 = 0;
    if(n%2 == 0)
    {
        for(int i = 1 ; i <= n/2-1 ; i++)sum2+= W(i)*W(n-i);
        return  sum2;
    }
    if(n%2 == 1)
    {   
        for(int i = 1 ; i <= (n+1)/2 - 1 ; i++)sum1+= W(i)*W(n-i);
        return sum1;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0012, 2024-11-02 14:41:48, PPPxxxPxxx (40%)

#include <iostream>
using namespace std;
long long T(int n, int k){ // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n){ // Schroder Number
    long long sum = 3*S(n-1);
    if(n == 0)return 1;
    if(n == 1) return 2;
    for(long long k = 1 ; k <= n-2 ; k++){
        sum +=S(k) * S(n-k-1);
    }
    return sum;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    long long sum2 = W(n/2)*(W(n/2)+1)/2;
    long long sum1 = 0;
    if(n%2 == 0)
    {
        for(int i = 1 ; i <= n/2-1 ; i++)sum2+= W(i)*W(n-i);
        return  sum2;
    }
    if(n%2 == 1)
    {   
        for(int i = 0 ; i <= (n+1)/2 - 1 ; i++)sum1+= W(i)*W(n-i);
        return sum1;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0013, 2024-11-02 14:42:07, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 0;
    if(n == 0)return 1;
    if(n == 1)return 2;
    for(int i = 1 ; i <= n-2 ; i ++){
        sum += S(i) * S(n - i - 1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n%2 == 0)
    {
        long long sum2 = W(n/2)*(W(n/2)+1)/2;
        for(int i = 1 ; i <= n/2-1 ; i++)sum2+= W(i)*W(n-i);
        return  sum2;
    }
    if(n%2 == 1)
    {   long long sum1 = 0;
        for(int i = 1 ; i <= n+1/2 - 1 ; i++)sum1+= W(i)*W(n-i);
        return sum1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0014, 2024-11-02 14:42:27, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n<k)return 0;
    if(k == 0)return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum = 0;
    if(n == 0)return 1;
    if(n == 1)return 2;
    for(int i = 1 ; i <= n-2 ; i ++){
        sum += S(i) * S(n - i - 1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n%2 == 0)
    {
        long long sum2 = W(n/2)*(W(n/2)+1)/2;
        for(int i = 1 ; i <= n/2-1 ; i++)sum2+= W(i)*W(n-i);
        return  sum2;
    }
    if(n%2 == 1)
    {   long long sum1 = 0;
        for(int i = 1 ; i <= (n+1)/2 - 1 ; i++)sum1+= W(i)*W(n-i);
        return sum1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0015, 2024-11-02 13:20:44, PPP------- (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    // Schroder Number
    return 0;
}
long long W(int n) { 
    // Wedderburn–Etherington Number
    return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0016, 2024-11-02 13:27:10, PPPPPP---- (60%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}
long long W(int n) { 
    // Wedderburn–Etherington Number
    return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0017, 2024-11-02 13:33:47, PPPPPP---- (60%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}
long long W(int n) { 
    if(n=0) return 0;
    if(n=1) return 1;
    if(n%2 == 0) {
        long long int result = (W(n/2)*W((n/2)+1))/2;
        for(int i=1; i <= ((n/2)-1); i++) {
            result += W(i)*W(n-i);
        }
        return result;
    }
    if(n%2 == 1) {
        long long int result = 0;
        for(int i=1; i<= (n+1)/2 - 1; i++) {
            result += W(i)*W(n-i);
        }
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0018, 2024-11-02 13:36:06, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0) {
        long long int result = (W(n/2)*W((n/2)+1))/2;
        for(int i=1; i <= ((n/2)-1); i++) {
            result += W(i)*W(n-i);
        }
        return result;
    }
    if(n%2 == 1) {
        long long int result = 0;
        for(int i=1; i<= (n+1)/2 - 1; i++) {
            result += W(i)*W(n-i);
        }
        return result;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0019, 2024-11-02 13:37:39, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0) {
        long long int result = (W(n/2)*W((n/2)+1))/2;
        for(int i=1; i <= ((n/2)-1); i++) {
            result += W(i)*W(n-i);
        }
        return result;
    }
    if(n%2 == 1) {
        long long int result2 = 0;
        for(int i=1; i<= (n+1)/2 - 1; i++) {
            result2 += W(i)*W(n-i);
        }
        return result2;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0020, 2024-11-02 13:40:24, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}
long long W(int n) { 
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2 == 0) {
        long long int result = (W(n/2)*W((n/2)+1))/2;
        for(int i=1; i <= ((n/2)-1); i++) {
            result += W(i)*W(n-i);
        }
        return result;
    }
    else if(n%2 == 1) {
        long long int result2 = 0;
        for(int i=1; i<= ((n+1)/2)-1; i++) {
            result2 += W(i)*W(n-i);
        }
        return result2;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0021, 2024-11-02 13:44:07, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}

long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    /*
    if(n%2 == 0) {
        long long int result1 = (W(n/2)*W((n/2)+1))/2;
        for(int i=1; i <= ((n/2)-1); i++) {
            result1 += W(i)*W(n-i);
        }
        return result1;
    }

    if(n%2 == 1) {
        long long int result2 = 0;
        for(int i=1; i<= ((n+1)/2)-1; i++) {
            result2 += W(i)*W(n-i);
        }
        return result2;
    }
    */
   else return 0;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0022, 2024-11-02 13:46:53, PPPPPPPx-x (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}

long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0) {
        long long int result1 = (W(n/2)*W((n/2)+1))/2;
        //for(int i=1; i <= ((n/2)-1); i++) {
        //    result1 += W(i)*W(n-i);
        //}
        return result1;
    }

    if(n%2 == 1) {
        long long int result2 = 0;
        //for(int i=1; i<= ((n+1)/2)-1; i++) {
        //    result2 += W(i)*W(n-i);
        //}
        return result2;
    }
    
   else return 0;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0023, 2024-11-02 13:48:04, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}

long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0) {
        long long int result1 = W(n/2);
        //for(int i=1; i <= ((n/2)-1); i++) {
        //    result1 += W(i)*W(n-i);
        //}
        return result1;
    }

    if(n%2 == 1) {
        long long int result2 = 0;
        //for(int i=1; i<= ((n+1)/2)-1; i++) {
        //    result2 += W(i)*W(n-i);
        //}
        return result2;
    }
    
   else return 0;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0024, 2024-11-02 13:49:45, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}

long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0) {
        long long int result1 = W(n/2);
        result1 *= W(n/2)+1;
        result1 /= 2;
        for(int i=1; i <= ((n/2)-1); i++) {
            result1 += W(i)*W(n-i);
        }
        return result1;
    }

    if(n%2 == 1) {
        long long int result2 = 0;
        //for(int i=1; i<= ((n+1)/2)-1; i++) {
        //    result2 += W(i)*W(n-i);
        //}
        return result2;
    }
    
   else return 0;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0025, 2024-11-02 13:50:43, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long int result;
    result = 3*S(n-1);
    for(int k=1; k<=(n-2); k++) {
        result += S(k)*S(n-k-1);
    }
    return result;
}

long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0) {
        long long int result1 = W(n/2);
        result1 *= W(n/2)+1;
        result1 /= 2;
        for(int i=1; i <= ((n/2)-1); i++) {
            result1 += W(i)*W(n-i);
        }
        return result1;
    }

    if(n%2 == 1) {
        long long int result2 = 0;
        for(int i=1; i<= ((n+1)/2)-1; i++) {
            result2 += W(i)*W(n-i);
        }
        return result2;
    }
    
   else return 0;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0026, 2024-11-02 09:20:03, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }
    if(k<1 && k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    double sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }

    if(n%2 == 0 && n>0){
        double sum = 0;
        int task = (n/2);
        for (int i = 1; i <= task-1; i++)
        {
            sum += (W(i)*W(n-i));
        }
        double left = (W(n/2)*W((n/2)+1))/2;
        return left+sum;
    }else if(n%2 == 1 && n >1){
        double sum2 = 0;
        int task2 = (n+1)/2;
        for (int i = 1; i <= task2-1; i++)
        {
            sum2 += (W(i)*W(n-i));
        }
        return sum2;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0027, 2024-11-02 09:20:48, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }
    if(k<1 && k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }

    if(n%2 == 0 && n>0){
        float sum = 0;
        int task = (n/2);
        for (int i = 1; i <= task-1; i++)
        {
            sum += (W(i)*W(n-i));
        }
        float left = (W(n/2)*W((n/2)+1))/2;
        return left+sum;
    }else if(n%2 == 1 && n >1){
        float sum2 = 0;
        int task2 = (n+1)/2;
        for (int i = 1; i <= task2-1; i++)
        {
            sum2 += (W(i)*W(n-i));
        }
        return sum2;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0028, 2024-11-02 10:10:40, PPPPPPPTTT (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }

    if(n%2 == 0 && n>0){
        float sum = 0;
        int task = (n/2);
        for (int i = 1; i <= task-1; i++)
        {
            sum += (W(i)*W(n-i));
        }
        float left = (W(n/2)*W((n/2)+1))/2;
        return left+sum;
    }else if(n%2 == 1 && n >1){
        float sum2 = 0;
        int task2 = (n+1)/2;
        for (int i = 1; i <= task2-1; i++)
        {
            sum2 += (W(i)*W(n-i));
        }
        return sum2;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0029, 2024-11-02 10:13:26, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }

    if(n%2 == 0 && n>0){
        float sum = 0;
        int task = (n/2);
        for (int i = 1; i <= task-1; i++)
        {
            sum += (W(i)*W(n-i));
        }
        float left = (W(n/2)*W((n/2)+1))/2;
        return left+sum;
    }else if(n%2 == 1 && n >1){
        float sum2 = 0;
        int task2 = (n+1)/2;
        for (int i = 1; i <= task2-1; i++)
        {
            sum2 += (W(i)*W(n-i));
        }
        return sum2;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0030, 2024-11-02 10:58:06, Compilation error (0%)

#include <iostream>
using namespace std;
long long W[1000000];
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    int task;
    if(n%2 == 0){
        task = (n/2);
    }else{
        task = (n+1)/2;
    }
    double sum = 0;
     for (int i = 1; i <= task-1; i++)
        {

            sum += (W(i)*W(n-i));
        }

    if(n%2 == 0 && n>0){
        float left = (W(n/2)*(W(n/2)+1))/2;
        return left+sum;
    }else{
        return sum;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0031, 2024-11-02 10:59:22, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    int task;
    if(n%2 == 0){
        task = (n/2);
    }else{
        task = (n+1)/2;
    }
    double sum = 0;
     for (int i = 1; i <= task-1; i++)
        {

            sum += (W(i)*W(n-i));
        }

    if(n%2 == 0 && n>0){
        float left = (W(n/2)*(W(n/2)+1))/2;
        return left+sum;
    }else{
        return sum;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0032, 2024-11-02 11:00:49, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    int task;
    if(n%2 == 0){
        task = (n/2);
    }else{
        task = (n+1)/2;
    }
    double sum = 0;
     for (int i = 1; i <= task-1; i++)
        {

            sum += (W(i)*W(n-i));
        }

    if(n%2 == 0 && n>0){
        double left = (W(n/2)*(W(n/2)+1))/2;
        return left+sum;
    }else{
        return sum;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0033, 2024-11-02 11:04:32, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    return (3*S(n-1))+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    int task;
    if(n%2 == 0){
        task = (n/2);
    }else{
        task = (n+1)/2;
    }
    double sum = 0;
     for (int i = 1; i <= task-1; i++)
        {

            sum += (W(i)*W(n-i));
        }

    if(n%2 == 0 && n>0){
        double left = (W(n/2)*(W(n/2)+1))/2;
        return left+sum;
    }else{
        return sum;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0034, 2024-11-02 11:05:32, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    float sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += (S(i)*S(n-i-1));
    }
    double left = 3*S(n-1);
    return left+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    int task;
    if(n%2 == 0){
        task = (n/2);
    }else{
        task = (n+1)/2;
    }
    double sum = 0;
     for (int i = 1; i <= task-1; i++)
        {

            sum += (W(i)*W(n-i));
        }

    if(n%2 == 0 && n>0){
        double left = (W(n/2)*(W(n/2)+1))/2;
        return left+sum;
    }else{
        return sum;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0035, 2024-11-02 11:07:02, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }else if( k> n){
        return 0;
    }

        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    long long sum = 0;
    for (int k = 1; k <= n-2; k++)
    {
        sum += (S(k)*S(n-k-1));
    }
    double left = 3*S(n-1);
    return left+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    int task;
    if(n%2 == 0){
        task = (n/2);
    }else{
        task = (n+1)/2;
    }
    double sum = 0;
     for (int i = 1; i <= task-1; i++)
        {

            sum += (W(i)*W(n-i));
        }

    if(n%2 == 0 && n>0){
        double left = (W(n/2)*(W(n/2)+1))/2;
        return left+sum;
    }else{
        return sum;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0036, 2024-11-02 09:26:42, Compilation error (0%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k)
}

long long S(int n) { 
  int a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<=n;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=n-2;k++) {
      a[i]+=a[k]*a[i-k-1];
    }
  }
  
  return a[n];
}

long long W(int n) { 
  int a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<n;i++) {
    if(i%2==0) {
      a[i]=(a[i/2]*(a[i/2]+1))/2;
      
      for(int j=1;j<=i/2-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      for(int j=1;j<=(i+1)/2-1;j++) {
        a[i]+=a[j]*a[i-j]
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0037, 2024-11-02 09:26:59, PPPP--P--- (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  int a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<=n;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=n-2;k++) {
      a[i]+=a[k]*a[i-k-1];
    }
  }
  
  return a[n];
}

long long W(int n) { 
  int a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<n;i++) {
    if(i%2==0) {
      a[i]=(a[i/2]*(a[i/2]+1))/2;
      
      for(int j=1;j<=i/2-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      for(int j=1;j<=(i+1)/2-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0038, 2024-11-02 09:32:20, PPPP--P--- (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  int a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<=n;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=n-2;k++) {
      if(i-k-1>=0) {
        a[i]+=a[k]*a[i-k-1];
      }
    }
  }
  
  return a[n];
}

long long W(int n) { 
  int a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<n;i++) {
    if(i%2==0) {
      a[i]=(a[i/2]*(a[i/2]+1))/2;
      
      for(int j=1;j<=i/2-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      for(int j=1;j<=(i+1)/2-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0039, 2024-11-02 09:33:17, PPPP--P--- (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  int a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<=n;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=n-2;k++) {
      if(i-k-1>=0) {
        a[i]+=a[k]*a[i-k-1];
      }
    }
  }
  
  return a[n];
}

long long W(int n) { 
  int a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<=n;i++) {
    if(i%2==0) {
      a[i]=(a[i/2]*(a[i/2]+1))/2;
      
      for(int j=1;j<=i/2-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      for(int j=1;j<=((i+1)/2-1);j++) {
        a[i]+=a[j]*a[i-j];
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0040, 2024-11-02 10:04:41, PPPP--P--- (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  long long a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<=n;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=n-2;k++) {
      a[i]+=a[k]*a[i-k-1];
    }
  }
  
  return a[n];
}

long long W(int n) { 
  long long a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<=n;i++) {
    if(i%2==0) {
      a[i]=(a[i/2]*(a[i/2]+1))/2;
      
      for(int j=1;j<=i/2-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      for(int j=1;j<=((i+1)/2-1);j++) {
        a[i]+=a[j]*a[i-j];
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0041, 2024-11-02 10:15:34, PPPPPPP--- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  long long a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<n+1;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=i-2;k++) {
      a[i]+=a[k]*a[(i-1)-k];
    }
  }
  
  return a[n];
}

long long W(int n) { 
  long long a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<n;i++) {
    if(i%2==0) {
      a[i]=(a[i/2]*(a[i/2]+1))/2;
      
      for(int j=1;j<=(i/2-1);j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      for(int j=1;j<=((i+1)/2-1);j++) {
        a[i]+=a[j]*a[i-j];
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0042, 2024-11-02 10:47:04, PPPPPPP--- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  long long a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<n+1;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=i-2;k++) {
      a[i]+=a[k]*a[(i-1)-k];
    }
  }
  
  return a[n];
}

long long W(int n) { 
  long long a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<=n;i++) {
    if(i%2==0) {
      a[i]=(a[i/2]*(a[i/2]+1))/2;
      
      for(int j=1;j<=(i/2-1);j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      int k=(i+1)/2;
      for(int j=1;j<=k-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0043, 2024-11-02 10:48:23, PPPPPPP--- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  long long a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<n+1;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=i-2;k++) {
      a[i]+=a[k]*a[(i-1)-k];
    }
  }
  
  return a[n];
}

long long W(int n) { 
  long long a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<=n;i++) {
    if(i%2==0) {
      int k=i/2;
      a[i]=(a[k]*(a[k]+1))/2;
      
      for(int j=1;j<=k-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
      continue;
    }else {
      int k=(i+1)/2;
      for(int j=1;j<=k-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
      continue;
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}
# 0044, 2024-11-02 11:13:14, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
  if(k==0) return 1;
  else if(k>n) return 0;
  
  return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
  long long a[n+1];
  a[0]=1;
  a[1]=2;
  
  for(int i=2;i<n+1;i++) {
    a[i]=3*a[i-1];
    for(int k=1;k<=i-2;k++) {
      a[i]+=a[k]*a[(i-1)-k];
    }
  }
  
  return a[n];
}

long long W(int n) { 
  long long a[n+1];
  a[0]=0;
  a[1]=1;
  
  for(int i=2;i<=n;i++) {
    if(i%2==0) {
      int x=i/2;
      a[i]=(a[x]*(a[x]+1))/2;
      
      for(int j=1;j<=(x-1);j++) {
        a[i]+=a[j]*a[i-j];
      }
    }else {
      a[i]=0;
      int k=(i+1)/2;
      for(int j=1;j<=k-1;j++) {
        a[i]+=a[j]*a[i-j];
      }
    }
  }
  
  return a[n];
}

int main() {
  string fn;
  int p1, p2;
  while (cin >> fn >> p1) {
    if (fn == "T") {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  
  return 0;
}

# 0045, 2024-11-02 11:52:15, ---xxxxxx- (0%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k=0){
        return(1);
    }if(k>1&k<=n){
        T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){
        
    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0046, 2024-11-02 11:53:39, ---xxxxxx- (0%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k=0){
        return(1);
    }if(k>1&k<=n){
        return(T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){

    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0047, 2024-11-02 11:54:23, PPPxxxxxx- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k==0){
        return(1);
    }if(k>1&k<=n){
        return(T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){

    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0048, 2024-11-02 11:58:41, PPP-PP---- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k==0){
        return(1);
    }if(k>1&k<=n){
        return(T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){
        long long x=0;
        for(int k=1;k<=n-2;++k){
            x+=S(k)*S(n-k-1);
        }
return(      (3*S(n-1))+x       );
    }
    if(n=0){
return(1);
    }
    if(n=1){
return(2);
    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0049, 2024-11-02 12:05:26, PPP-PP---- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k==0){
        return(1);
    }if(k>1&k<=n){
        return(T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){
        long long x=0;
        for(int k=1;k<=n-2;++k){
            x+=S(k)*S(n-k-1);
        }
return(      (3*S(n-1))+x       );
    }
    if(n=0){
return(1);
    }
    if(n=1){
return(2);
    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number
if(n=0){
return(0);
}
if(n=1){
return(1);
}
if(n%2==0){
long long x=0;
        for(int i=1;i<=(n/2) -1;++i){
            x+=W(i)*W(n-i);
        }
return(      (W(n/2)*(W(n/2)+1))/2+x       );
}
if(n%2!=0){
long long x=0;
        for(int i=1;i<=((n+1)/2 )-1;++i){
            x+=W(i)*W(n-i);
        }
return(      x       );
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0050, 2024-11-02 12:05:41, PPP-PP---- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k==0){
        return(1);
    }if(k>1&k<=n){
        return(T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){
        long long x=0;
        for(int k=1;k<=n-2;++k){
            x+=S(k)*S(n-k-1);
        }
return(      (3*S(n-1))+x       );
    }
    if(n=0){
return(1);
    }
    if(n=1){
return(2);
    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number
if(n=0){
return(0);
}
if(n=1){
return(1);
}
if(n%2==0){
long long x=0;
        for(int i=1;i<=(n/2) -1;++i){
            x+=W(i)*W(n-i);
        }
return(      (W(n/2)*(W(n/2)+1))/2+x       );
}
if(n%2!=0){
long long x=0;
        for(int i=1;i<=((n+1)/2 )-1;++i){
            x+=W(i)*W(n-i);
        }
return(      x       );
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0051, 2024-11-02 12:07:53, PPP-PP---- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k==0){
        return(1);
    }if(k>1&k<=n){
        return(T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){
        long long x=0;
        for(int k=1;k<=n-2;++k){
            x+=S(k)*S(n-k-1);
        }
return(      (3*S(n-1))+x       );
    }
    if(n=0){
return(1);
    }
    if(n=1){
return(2);
    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number
if(n=0){
return(0);
}
if(n=1){
return(1);
}
if(n%2==0){
long long x=0;
        for(int i=1;i<=(n/2) -1;++i){
            x+=W(i)*W(n-i);
        }
return(      ((W(n/2)*(W(n/2)+1))/2)+x       );
}
if(n%2!=0){
long long x=0;
        for(int i=1;i<=((n+1)/2 )-1;++i){
            x+=W(i)*W(n-i);
        }
return(      x       );
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0052, 2024-11-02 12:10:51, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{  // Schroder Triangle
    if(k>n){
        return(0);
    }
    if(k==0){
        return(1);
    }if(k>1&k<=n){
        return(T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
}   
long long S(int n) 
{         // Schroder Number
    if(n>=2){
        long long x=0;
        for(int k=1;k<=n-2;++k){
            x+=S(k)*S(n-k-1);
        }
return(      (3*S(n-1))+x       );
    }
    if(n==0){
return(1);
    }
    if(n==1){
return(2);
    }

}
long long W(int n) 
{         // Wedderburn–Etherington Number
if(n==0){
return(0);
}
if(n==1){
return(1);
}
if(n%2==0){
long long x=0;
        for(int i=1;i<=(n/2) -1;++i){
            x+=W(i)*W(n-i);
        }
return(      ((W(n/2)*(W(n/2)+1))/2)+x       );
}
if(n%2!=0){
long long x=0;
        for(int i=1;i<=((n+1)/2 )-1;++i){
            x+=W(i)*W(n-i);
        }
return(      x       );
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0053, 2024-11-02 09:30:25, x--PPPPPP- (60%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S
long long T(int n, int k) { // Schroder Triangle
    if(k==1){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    
}
long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0054, 2024-11-02 09:32:51, Compilation error (0%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S

long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0055, 2024-11-02 09:33:30, ---PPPPPP- (60%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S
long long T(int n, int k) { // Schroder Triangle
    if(k==1){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    
}
long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
//cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0056, 2024-11-02 09:33:54, x-----PPP- (30%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S
long long T(int n, int k) { // Schroder Triangle
    if(k==1){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    
}
long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
//cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0057, 2024-11-02 09:34:10, x--PPP---- (30%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S
long long T(int n, int k) { // Schroder Triangle
    if(k==1){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    
}
long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
//cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0058, 2024-11-02 09:40:44, x--PPPPPP- (60%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S
long long T(int n, int k) { // Schroder Triangle
    if(k==1){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    
}
long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0059, 2024-11-02 09:41:49, x--PPPPPP- (60%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S
long long T(int n, int k) { // Schroder Triangle
long long sum = 0;
    if(k==1){
        return 1;
    }
    if(k>n){
        return 0;
    }
    sum+=T(n,k-1);
    sum+=T(n-1,k-1);
    sum+=T(n-1,k);
    return sum;
    
}
long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0060, 2024-11-02 10:16:17, PPPPPPPPPP (100%)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define first F
#define second S
long long T(int n, int k) { // Schroder Triangle
long long sum = 0;
    if(k==0){
        return 1;
    }
    if(k>n){
        return 0;
    }
    sum+=T(n,k-1);
    sum+=T(n-1,k-1);
    sum+=T(n-1,k);
    return sum;
    
}
long long S(int n) { // Schroder Number
long long sum = 0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(int i=1;i<=n-2;i++){
        sum+= S(i)*S(n-i-1);
    }
    return sum + (3*S(n-1));
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum + ((W(n/2)*(W(n/2)+1))/2);
    }else{
    for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
    }
    return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0061, 2024-11-02 10:24:08, TTTPPP-TTT (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (n==0) {
        return 1;
    } 
    if (k > n) {
        return 0;
    }
    return T(n, k-1) +T(n-1, k-1) + T(n-1, k);


}
long long S(int n) {         // Schroder Number
    if (n==0) {
        return 1;
    }
    else if (n==1) {
        return 2;
    }
    int sum=0;
    for (int k=1; k<=n-2; k++) {
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;


}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0 || n==1) {
        return 1;
    }
    if (n%2 == 0) {
        int sum=0;
        for (int k=1; k<=(n/2)-1;  k++) {
            sum += W(k)*W(k-1);
        }
        return ((W(n/2) * W((n/2) + 1))/2) + sum;
    } else {
        int sum=0;
        for (int k=1; k<=((n+1)/2)-1;  k++) {
            sum += W(k)*W(k-1);
        }
        return sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0062, 2024-11-02 10:25:49, xxxPPP---x (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (n==0) {
        return 1;
    } 
    if (k > n) {
        return 0;
    }
    return T(n, k-1) +T(n-1, k-1) + T(n-1, k);


}
long long S(int n) {         // Schroder Number
    if (n==0) {
        return 1;
    }
    else if (n==1) {
        return 2;
    }
    int sum=0;
    for (int k=1; k<=n-2; k++) {
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;


}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0 || n==1) {
        return 1;
    }
    if (n%2 == 0) {
        int sum=0;
        for (int k=1; k<=(n/2)-1;  k++) {
            sum += W(k)*W(k-1);
        }
        return ((W(n/2) * W((n/2)-1))/2) + sum;
    } else {
        int sum=0;
        for (int k=1; k<=((n+1)/2)-1;  k++) {
            sum += W(k)*W(k-1);
        }
        return sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0063, 2024-11-02 10:27:20, xxxPPP---x (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (n==0) {
        return 1;
    } 
    if (k > n) {
        return 0;
    }
    return T(n, k-1) +T(n-1, k-1) + T(n-1, k);


}
long long S(int n) {         // Schroder Number
    if (n==0) {
        return 1;
    }
    else if (n==1) {
        return 2;
    }
    int sum=0;
    for (int k=1; k<=n-2; k++) {
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;


}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0 || n==1) {
        return 1;
    }
    if (n%2 == 0) {
        int sum=0;
        for (int k=1; k<=(n/2)-1;  k++) {
            sum += W(k)*W(k-1);
        }
        return ((W(n/2) * W(n/2)+1)) + sum;
    } else {
        int sum=0;
        for (int k=1; k<=((n+1)/2)-1;  k++) {
            sum += W(k)*W(k-1);
        }
        return sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0064, 2024-11-02 10:28:53, xxTPPP---x (30%)

    #include <iostream>

    using namespace std;

    long long T(int n, int k) {  // Schroder Triangle
        if (n==0) {
            return 1;
        } 
        if (k > n) {
            return 0;
        }
        return T(n, k-1) +T(n-1, k-1) + T(n-1, k);


    }
    long long S(int n) {         // Schroder Number
        if (n==0) {
            return 1;
        }
        else if (n==1) {
            return 2;
        }
        int sum=0;
        for (int k=1; k<=n-2; k++) {
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + sum;


    }
    long long W(int n) {         // Wedderburn–Etherington Number
        if (n==0 || n==1) {
            return 1;
        }
        if (n%2 == 0) {
            int sum=0;
            for (int k=1; k<=(n/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return (((W(n/2) * W(n/2)+1))/2) + sum;
        } else {
            int sum=0;
            for (int k=1; k<=((n+1)/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return sum;
        }


    }
    int main() {
        string fn;
        int p1, p2;
        while (cin >> fn >> p1) {
            if (fn == "T") {
                cin >> p2;
                cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
            } else if (fn == "S") {
                cout << fn << '(' << p1 << ") = " << S(p1) << endl;
            } else if (fn == "W") {
                cout << fn << '(' << p1 << ") = " << W(p1) << endl;
            }
        }
        return 0;
    }
# 0065, 2024-11-02 10:31:17, xxxPPP-PPx (50%)

    #include <iostream>

    using namespace std;

    long long T(int n, int k) {  // Schroder Triangle
        if (n==0) {
            return 1;
        } 
        if (k > n) {
            return 0;
        }
        return T(n, k-1) +T(n-1, k-1) + T(n-1, k);


    }
    long long S(int n) {         // Schroder Number
        if (n==0) {
            return 1;
        }
        else if (n==1) {
            return 2;
        }
        int sum=0;
        for (int k=1; k<=n-2; k++) {
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + sum;


    }
    long long W(int n) {         // Wedderburn–Etherington Number
        if (n==0 || n==1) {
            return 1;
        }
        if (n%2 == 0) {
            int sum=0;
            for (int k=1; k<=(n/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return (((W(n/2) * (W(n/2)+1)))/2) + sum;
        } else {
            int sum=0;
            for (int k=1; k<=((n+1)/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return sum;
        }


    }
    int main() {
        string fn;
        int p1, p2;
        while (cin >> fn >> p1) {
            if (fn == "T") {
                cin >> p2;
                cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
            } else if (fn == "S") {
                cout << fn << '(' << p1 << ") = " << S(p1) << endl;
            } else if (fn == "W") {
                cout << fn << '(' << p1 << ") = " << W(p1) << endl;
            }
        }
        return 0;
    }
# 0066, 2024-11-02 10:31:45, xxxPPPPPPx (60%)

    #include <iostream>

    using namespace std;

    long long T(int n, int k) {  // Schroder Triangle
        if (n==0) {
            return 1;
        } 
        if (k > n) {
            return 0;
        }
        return T(n, k-1) +T(n-1, k-1) + T(n-1, k);


    }
    long long S(int n) {         // Schroder Number
        if (n==0) {
            return 1;
        }
        else if (n==1) {
            return 2;
        }
        int sum=0;
        for (int k=1; k<=n-2; k++) {
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + sum;


    }
    long long W(int n) {         // Wedderburn–Etherington Number
        if (n==0 || n==1) {
            return n;
        }
        if (n%2 == 0) {
            int sum=0;
            for (int k=1; k<=(n/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return (((W(n/2) * (W(n/2)+1)))/2) + sum;
        } else {
            int sum=0;
            for (int k=1; k<=((n+1)/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return sum;
        }


    }
    int main() {
        string fn;
        int p1, p2;
        while (cin >> fn >> p1) {
            if (fn == "T") {
                cin >> p2;
                cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
            } else if (fn == "S") {
                cout << fn << '(' << p1 << ") = " << S(p1) << endl;
            } else if (fn == "W") {
                cout << fn << '(' << p1 << ") = " << W(p1) << endl;
            }
        }
        return 0;
    }
# 0067, 2024-11-02 10:33:26, PPPPPPPPPP (100%)

    #include <iostream>

    using namespace std;

    long long T(int n, int k) {  // Schroder Triangle
        if (k==0) {
            return 1;
        } 
        if (k > n) {
            return 0;
        }
        return T(n, k-1) +T(n-1, k-1) + T(n-1, k);


    }
    long long S(int n) {         // Schroder Number
        if (n==0) {
            return 1;
        }
        else if (n==1) {
            return 2;
        }
        int sum=0;
        for (int k=1; k<=n-2; k++) {
            sum += S(k)*S(n-k-1);
        }
        return (3*S(n-1)) + sum;


    }
    long long W(int n) {         // Wedderburn–Etherington Number
        if (n==0 || n==1) {
            return n;
        }
        if (n%2 == 0) {
            int sum=0;
            for (int k=1; k<=(n/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return (((W(n/2) * (W(n/2)+1)))/2) + sum;
        } else {
            int sum=0;
            for (int k=1; k<=((n+1)/2)-1;  k++) {
                sum += W(k)*W(n-k);
            }
            return sum;
        }


    }
    int main() {
        string fn;
        int p1, p2;
        while (cin >> fn >> p1) {
            if (fn == "T") {
                cin >> p2;
                cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
            } else if (fn == "S") {
                cout << fn << '(' << p1 << ") = " << S(p1) << endl;
            } else if (fn == "W") {
                cout << fn << '(' << p1 << ") = " << W(p1) << endl;
            }
        }
        return 0;
    }

# 0068, 2024-11-02 09:16:02, PPPP------ (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k==0) return 1;
 if(k > n) return 0 ;
 return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;

}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0069, 2024-11-02 09:28:22, PPPPPP---- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k==0) return 1;
 if(k > n) return 0 ;
 return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 int x = 0  ;
 for(int k=1; k<n-1 ; k++ ){
    x = x + S(k)*S(n-k-1) ;
 }
 return x + 3*S(n-1);
 
}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0070, 2024-11-02 09:34:53, PPPP------ (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k==0) return 1;
 if(k > n) return 0 ;
 return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 int x = 0  ;
 for(int k=1; k<n-1 ; k++ ){
    x = x + S(k)*S(n-k-2) ;
 }
 return x + 3*S(n-1);
 
}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0071, 2024-11-02 09:35:06, PPPPPP---- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k==0) return 1;
 if(k > n) return 0 ;
 return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 int x = 0  ;
 for(int k=1; k<n-1 ; k++ ){
    x = x + S(k)*S(n-k-1) ;
 }
 return x + 3*S(n-1);
 
}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0072, 2024-11-02 09:39:35, PPPPPP---- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k==0) return 1;
 if(k > n) return 0 ;
 return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 int x = 0  ;
 for(int k=1; k<n-1 ; k++ ){
    x = x + (S(k)*S(n-k-1)) ;
 }
 return x + 3*S(n-1);
 
}
long long W(int n) {         // Wedderburn–Etherington Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 if(n%2 == 0) {
    int x = 0 ;
    int a = ( W(n/2) * (W(n/2)+1) ) /2 ;
    for(int i=1 ; i< (n/2) ; i++){
        x = x + (W(i)*W(n-i)) ;
    }
    return a + x ;
 }
 if(n%2 != 0){
    int y = 0 ;
    for(int i=1; i<(n+1)/2 ; i++){
        y = y + W(i)*W(n-i) ;
    }
    return y ;
 }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0073, 2024-11-02 09:40:20, PPPPPP---- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k==0) return 1;
 if(k > n) return 0 ;
 return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 int x = 0  ;
 for(int k=1; k<n-1 ; k++ ){
    x = x + (S(k)*S(n-k-1)) ;
 }
 return x + 3*S(n-1);
 
}
long long W(int n) {         // Wedderburn–Etherington Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 if(n%2 == 0) {
    int x = 0 ;
    int a = ( W(n/2) * (W(n/2)+1) ) /2 ;
    for(int i=1 ; i< (n/2) ; i++){
        x = x + (W(i)*W(n-i)) ;
    }
    return a + x ;
 }
 if(n%2 != 0){
    int y = 0 ;
    for(int i=1; i<(n+1)/2 ; i++){
        y = y + W(i)*W(n-i) ;
    }
    return y ;
 }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0074, 2024-11-02 09:40:37, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k==0) return 1;
 if(k > n) return 0 ;
 return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
 if(n==0) return 1 ;
 if(n==1) return 2 ;
 int x = 0  ;
 for(int k=1; k<n-1 ; k++ ){
    x = x + (S(k)*S(n-k-1)) ;
 }
 return x + 3*S(n-1);
 
}
long long W(int n) {         // Wedderburn–Etherington Number
 if(n==0) return 0 ;
 if(n==1) return 1 ;
 if(n%2 == 0) {
    int x = 0 ;
    int a = ( W(n/2) * (W(n/2)+1) ) /2 ;
    for(int i=1 ; i< (n/2) ; i++){
        x = x + (W(i)*W(n-i)) ;
    }
    return a + x ;
 }
 if(n%2 != 0){
    int y = 0 ;
    for(int i=1; i<(n+1)/2 ; i++){
        y = y + W(i)*W(n-i) ;
    }
    return y ;
 }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0075, 2024-11-02 12:43:08, P--P--x--- (20%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k && k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (k>n) return 0;
    return 1;
}
long long S(int n) {         // Schroder Number
    if (n>=2){
        int sum=0;
        for (int k=1; k<=n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return sum;
    }
    if (n==0) return 1;
    if (n==1) return 2;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n%2==0){
        int sum=0;
        for (int i=1; i<=(n/1)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    if (n>1&&n%2!=0){
        int sum=0;
        for (int i=1; i<=(n+1)/2-1; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    if (n==0) return 0;
    if (n==1) return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0076, 2024-11-02 12:45:36, P--PPPP--- (50%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k && k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (k>n) return 0;
    if (k==0) return 1;
}
long long S(int n) {         // Schroder Number
    if (n>=2){
        int sum=0;
        for (int k=1; k<=n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
    if (n==0) return 1;
    if (n==1) return 2;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n!=0&&n%2==0){
        int sum=0;
        for (int i=1; i<=(n/1)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    if (n!=1&&n%2!=0){
        int sum=0;
        for (int i=1; i<=(n+1)/2-1; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    if (n==0) return 0;
    if (n==1) return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0077, 2024-11-02 12:47:00, P--PPPPPP- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k && k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (k>n) return 0;
    if (k==0) return 1;
}
long long S(int n) {         // Schroder Number
    if (n>=2){
        int sum=0;
        for (int k=1; k<=n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
    if (n==0) return 1;
    if (n==1) return 2;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n!=0&&n%2==0){
        int sum=0;
        for (int i=1; i<=(n/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    if (n!=1&&n%2!=0){
        int sum=0;
        for (int i=1; i<=(n+1)/2-1; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    if (n==0) return 0;
    if (n==1) return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0078, 2024-11-02 12:49:05, P--PPPPPP- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k && k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (k>n) return 0;
    if (k==0) return 1;
}
long long S(int n) {         // Schroder Number
    if (n>=2){
        long long sum=0;
        for (int k=1; k<=n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
    if (n==0) return 1;
    if (n==1) return 2;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n!=0&&n%2==0){
        long long sum=0;
        for (int i=1; i<=(n/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    if (n!=1&&n%2!=0){
        long long sum=0;
        for (int i=1; i<=(n+1)/2-1; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    if (n==0) return 0;
    if (n==1) return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0079, 2024-11-02 12:52:59, P--PPPPPP- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if (k>n) return 0;
    return 1;
}
long long S(int n) {         // Schroder Number
    if (n>=2){
        long long sum=0;
        for (int k=1; k<=n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
    else if (n==0) return 1;
    else if (n==1) return 2;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n!=0&&n%2==0){
        long long sum=0;
        for (int i=1; i<=(n/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    else if (n!=1&&n%2!=0){
        long long sum=0;
        for (int i=1; i<=(n+1)/2-1; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    else if (n==0) return 0;
    else if (n==1) return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0080, 2024-11-02 14:34:49, PPPPPPPPPP (100%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {
    // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    if (1<k&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {
    // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    if (n>=2){
        long long sum=0;
        for (int k=1; k<=n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {
    // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n!=0&&n%2==0){
        long long sum=0;
        for (int i=1; i<=(n/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    else if (n!=1&&n%2==1){
        long long sum=0;
        for (int i=1; i<=((n+1)/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0081, 2024-11-02 15:31:38, PPPPPPPPPP (100%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {
    // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    if (1<k&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {
    // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    if (n>=2){
        long long sum=0;
        for (int k=1; k<=n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {
    // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n!=0&&n%2==0){
        long long sum=0;
        for (int i=1; i<=(n/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    else if (n!=1&&n%2==1){
        long long sum=0;
        for (int i=1; i<=((n+1)/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0082, 2024-11-02 10:26:29, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0 ;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    long long sum = 0 ;
    for(long long k = 1 ; k<=(n-2) ; k++){
       sum += S(k) * S(n-k-1) ;
    }
    return 3*S(n-1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    if(n%2==0 && n!=0 && n!=1){
        long long sum = 0 ;
        for(long long i = 1 ; i<=((n/2)-1) ; i++){
            sum += W(i) * W(n-i) ;
        }
        return ((W(n/2) * (W(n/2) + 1))/2) + sum ;
    }
    if(n%2 == 1 && n!=0 && n!=1){
        long long res = 0 ;
        for(long long i = 1 ; i<=(((n+1)/2) - 1) ; i++){
        res += W(i) * W(n-1) ;
        }
        return res ;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0083, 2024-11-02 10:50:21, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0 ;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    long long sum = 0 ;
    for(long long k = 1 ; k<=(n-2) ; k++){
       sum += S(k) * S(n-k-1) ;
    }
    return 3*S(n-1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    if(n%2==0){
        long long sum = 0 ;
        for(long long i = 1 ; i<=((n/2)-1) ; i++){
            sum += W(i) * W(n-i) ;
        }
        return ((W(n/2) * (W(n/2) + 1))/2) + sum ;
    }
    long long res = 0 ;
    for(long long i = 1 ; i<=(((n+1)/2) - 1) ; i++){
       res += W(i) * W(n-1) ;
    }
    return res ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0084, 2024-11-02 11:30:31, PPPPPPx-T- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0 ;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    long long sum = 0 ;
    for(long long k = 1 ; k<=(n-2) ; k++){
       sum += S(k) * S(n-k-1) ;
    }
    return 3*S(n-1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==1) return 1 ;
    if(n%2==0){
        long long sum = 0 ;
        for(long long i = 1 ; i<=((n/2)-1) ; i++){
            sum += W(i) * W(n-i) ;
        }
        return ((W(n/2) * (W(n/2) + 1))/2) + sum ;
    }
    if(n%2 == 1){
        long long res = 0 ;
        for(long long i = 1 ; i<=(((n+1)/2) - 1) ; i++){
           res += W(i) * W(n-1) ;
        }
        return res ;
    }
    return 0 ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0085, 2024-11-02 11:30:49, PPPPPPP-T- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0 ;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    long long sum = 0 ;
    for(long long k = 1 ; k<=(n-2) ; k++){
       sum += S(k) * S(n-k-1) ;
    }
    return 3*S(n-1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    if(n%2==0){
        long long sum = 0 ;
        for(long long i = 1 ; i<=((n/2)-1) ; i++){
            sum += W(i) * W(n-i) ;
        }
        return ((W(n/2) * (W(n/2) + 1))/2) + sum ;
    }
    if(n%2 == 1){
        long long res = 0 ;
        for(long long i = 1 ; i<=(((n+1)/2) - 1) ; i++){
           res += W(i) * W(n-1) ;
        }
        return res ;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0086, 2024-11-02 11:31:10, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0 ;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    long long sum = 0 ;
    for(long long k = 1 ; k<=(n-2) ; k++){
       sum += S(k) * S(n-k-1) ;
    }
    return 3*S(n-1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    if(n%2==0){
        long long sum = 0 ;
        for(long long i = 1 ; i<=((n/2)-1) ; i++){
            sum += W(i) * W(n-i) ;
        }
        return ((W(n/2) * (W(n/2) + 1))/2) + sum ;
    }
    long long res = 0 ;
    for(long long i = 1 ; i<=(((n+1)/2) - 1) ; i++){
       res += W(i) * W(n-1) ;
    }
    return res ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0087, 2024-11-02 11:44:34, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0 ;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    long long sum = 0 ;
    for(long long k = 1 ; k<=(n-2) ; k++){
       sum += S(k) * S(n-k-1) ;
    }
    return 3*S(n-1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    if(n%2==0){
        int time = n/2 - 1;
        long long sum = 0 ;
        for(long long i = 1 ; i<=time; i++){
            sum += W(i) * W(n-i) ;
        }
        return ((W(n/2) * (W(n/2) + 1))/2) + sum ;
    }
    int time2 = (n+1)/2 - 1 ;
    long long res = 0 ;
    for(long long i = 1 ; i<=time2 ; i++){
       res += W(i) * W(n-1) ;
    }
    return res ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0088, 2024-11-02 11:45:20, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0 ;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    long long sum = 0 ;
    for(long long k = 1 ; k<=(n-2) ; k++){
       sum += S(k) * S(n-k-1) ;
    }
    return 3*S(n-1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    if(n%2==0){
        int time = n/2 - 1;
        long long sum = 0 ;
        for(long long i = 1 ; i<=time; i++){
            sum += W(i) * W(n-i) ;
        }
        return ((W(n/2) * (W(n/2) + 1))/2) + sum ;
    }
    int time2 = (n+1)/2 - 1 ;
    long long res = 0 ;
    for(long long i = 1 ; i<=time2 ; i++){
       res += W(i) * W(n-i) ;
    }
    return res ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0089, 2024-11-02 12:40:36, xxx------x (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    else if(1<k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if(k==0) return 1;

}
// long long S(int n) {         // Schroder Number
    

// }
// long long W(int n) {         // Wedderburn–Etherington Number


// }
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        // } else if (fn == "S") {
        //     cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        // } else if (fn == "W") {
        //     cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0090, 2024-11-02 12:57:31, xxxPPPP--x (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    else if(1<k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if(k==0) return 1;

}
long long S(int n) {         // Schroder Number
    int sum=0;
    
    if(n>=2){
        for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
        return sum = 0;
    }
    else if(n==0) return 1;
    else if(n==1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    int sum=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n>2&&n%2==1){
        for(int i=1;i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
        return sum=0;
    }
    else if(n>1 && n%2==0){
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum + W(n/2)*(W(n/2)+1);
        return sum=0;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0091, 2024-11-02 13:06:06, P--PPPP--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n && k>=0 && n>=0) return 0;
    else if(k<=n && k>1&& n>=0) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if(k==0) return 1;

}
long long S(int n) {         // Schroder Number
    int sum=0;
    
    if(n>=2){
        for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
        return sum = 0;
    }
    else if(n==0) return 1;
    else if(n==1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    int sum=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n>2&&n%2==1){
        for(int i=1;i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
        return sum=0;
    }
    else if(n>1 && n%2==0){
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum + W(n/2)*(W(n/2)+1);
        return sum=0;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0092, 2024-11-02 13:09:23, P--PPPP--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n && k>=0 && n>=0) return 0;
    else if(k<=n && k>1) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if(k==0 && n>=0) return 1;

}
long long S(int n) {         // Schroder Number
    int sum=0;
    
    if(n>=2){
        for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
        return sum = 0;
    }
    else if(n==0) return 1;
    else if(n==1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    int sum=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n>2&&n%2==1){
        for(int i=1;i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
        return sum=0;
    }
    else if(n>1 && n%2==0){
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum + W(n/2)*(W(n/2)+1);
        return sum=0;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0093, 2024-11-02 13:17:35, P--PPPP--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n && k>=0 && n>=0) return 0;
    else if(k<=n && k>1) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if(k==0 && n>=0) return 1;

}
long long S(int n) {         // Schroder Number
    
    if(n>=2){
        long long sum=0;
        for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
        
    }
    else if(n==0) return 1;
    else if(n==1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n>2&&n%2==1){
        long long sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
        
    }
    else if(n>1 && n%2==0){
        int sum=0;
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum + W(n/2)*(W(n/2)+1);
        
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0094, 2024-11-02 13:21:38, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n && k>=0 && n>=0) return 0;
    else if(k<=n && k>1) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if(k==0 && n>=0) return 1;

}
long long S(int n) {         // Schroder Number
    
    if(n>=2){
        long long sum=0;
        for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
        
    }
    else if(n==0) return 1;
    else if(n==1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n>2&&n%2==1){
        long long sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
        
    }
    else if(n>1 && n%2==0){
        long long sum=0;
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum + (W(n/2)*(W(n/2)+1))/2;
        
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0095, 2024-11-02 13:38:41, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n && k>=0 && n>=0) return 0;
    
        
    else if(k==0 && n>=0) return 1;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    

}
long long S(int n) {         // Schroder Number
    
    if(n>=2){
        long long sum=0;
        for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
        
    }
    else if(n==0) return 1;
    else if(n==1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n>2&&n%2==1){
        long long sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
        
    }
    else if(n>1 && n%2==0){
        long long sum=0;
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum + (W(n/2)*(W(n/2)+1))/2;
        
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0096, 2024-11-02 09:23:27, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;

    return T(n - 1, k) + T(n - 1, k -1) + T(n, k - 1);
}

long long S(int n) {         // Schroder Number
    if(n < 2) return n + 1;
    int sum = 0;

    for(int i = 1; i <= n - 2; i++){
        sum += S(i) * S(n - i - 1);
    }

    return 3 * S(n - 1) + sum; 
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n < 2) return n;

    int sum = 0, upper;
    if(n % 2){
        
        upper = n/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        int same = W(n/2);
        return (same/2 * same + same/2) + sum; 
    }
    else{
        upper = (n + 1)/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0097, 2024-11-02 09:24:01, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;

    return T(n - 1, k) + T(n - 1, k -1) + T(n, k - 1);
}

long long S(int n) {         // Schroder Number
    if(n < 2) return n + 1;
    int sum = 0;

    for(int i = 1; i <= n - 2; i++){
        sum += S(i) * S(n - i - 1);
    }

    return S(n - 1) * 3 + sum; 
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n < 2) return n;

    int sum = 0, upper;
    if(n % 2){
        
        upper = n/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        int same = W(n/2);
        return (same/2 * same + same/2) + sum; 
    }
    else{
        upper = (n + 1)/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0098, 2024-11-02 09:25:20, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;

    return T(n - 1, k) + T(n - 1, k -1) + T(n, k - 1);
}

long long S(int n) {         // Schroder Number
    if(n < 2) return n + 1;
    long long sum = 0;

    for(int i = 1; i <= n - 2; i++){
        sum += S(i) * S(n - i - 1);
    }

    return S(n - 1) * 3 + sum; 
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n < 2) return n;

    long long sum = 0;
    int upper;
    if(n % 2){
        
        upper = n/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        int same = W(n/2);
        return (same/2 * same + same/2) + sum; 
    }
    else{
        upper = (n + 1)/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0099, 2024-11-02 09:28:26, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;

    return T(n - 1, k) + T(n - 1, k -1) + T(n, k - 1);
}

long long S(int n) {         // Schroder Number
    if(n < 2) return n + 1;
    long long sum = 0;

    for(int i = 1; i <= n - 2; i++){
        sum += S(i) * S(n - i - 1);
    }

    return  S(n - 1) * 3 + sum; 
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n < 2) return n;

    long long sum = 0;
    int upper;
    if(n % 2){
        
        upper = n/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        int same = W(n/2);
        return (same/2 * same + same/2) + sum; 
    }
    else{
        upper = (n + 1)/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0100, 2024-11-02 10:56:08, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;

    return T(n - 1, k) + T(n - 1, k -1) + T(n, k - 1);
}

long long S(int n) {         // Schroder Number
    if(n < 2) return n + 1;
    long long sum = 0;

    for(int i = 1; i <= n - 2; i++){
        sum += S(i) * S(n - i - 1);
    }

    return  S(n - 1) * 3 + sum; 
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n < 2) return n;

    long long sum = 0;
    int upper;
    if(n % 2 == 0){
        
        upper = n/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        int same = W(n/2);
        return (same/2 * same + same/2) + sum; 
    }
    else{
        upper = (n + 1)/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0101, 2024-11-02 10:59:45, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;

    return T(n - 1, k) + T(n - 1, k -1) + T(n, k - 1);
}

long long S(int n) {         // Schroder Number
    if(n < 2) return n + 1;
    long long sum = 0;

    for(int i = 1; i <= n - 2; i++){
        sum += S(i) * S(n - i - 1);
    }

    return  S(n - 1) * 3 + sum; 
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n < 2) return n;

    long long sum = 0;
    int upper;
    if(n % 2 == 0){
        
        upper = n/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        long long same = W(n/2);
        return (same/2 * same + same/2) + sum; 
    }
    else{
        upper = (n + 1)/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0102, 2024-11-02 11:03:11, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;

    return T(n - 1, k) + T(n - 1, k -1) + T(n, k - 1);
}

long long S(int n) {         // Schroder Number
    if(n < 2) return n + 1;
    long long sum = 0;

    for(int i = 1; i <= n - 2; i++){
        sum += S(i) * S(n - i - 1);
    }

    return  S(n - 1) * 3 + sum; 
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n < 2) return n;

    long long sum = 0;
    int upper;
    if(n % 2 == 0){
        
        upper = n/2 - 1;


        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        long long same = W(n/2);

        return (same * same + same)/2 + sum; 
    }
    else{
        upper = (n + 1)/2 - 1;
        for(int i = 1; i <= upper; i++){
            sum += W(i) * W(n - i);
        }

        return sum;
    }
    
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0103, 2024-11-02 14:45:54, PPPPxx-xxx (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0 ;
    if (n>= k && k > 1 )return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;

}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    if (n>= 2)
    {
        int temp  = 3 * S(n-1) ;  // may be fix
        for ( int i = 1 ; i<= n ;i++)
        {
            temp +=  S(i) * S(n - i - 1) ;
        } 
        return temp ;



    }

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n == 0 || n == 1) return 1;
    if (n%2 == 1 ) 
    {
        int temp = 0 ;
        for (int i = 1 ; i <= ((n+1) / 2)+1 ; i++ )
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }
    if (n%2 == 0 )
    {
        int temp = ( W(n/2)*(W(n/2)+1) ) / 2;
        for ( int i =1 ; i<= (n/2)-1 ; i++)
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }






}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0104, 2024-11-02 14:51:46, PPPPxxPxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0 ;
    if (n>= k && k > 1 )return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;

}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    if (n>= 2)
    {
        int temp  = 3 * S(n-1) ;  // may be fix
        for ( int i = 1 ; i<= n ;i++)
        {
            temp +=  S(i) * S(n - i - 1) ;
        } 
        return temp ;



    }

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n == 1) return 1;
    if (n == 0) return 0;
    if (n%2 == 1 ) 
    {
        int temp = 0 ;
        for (int i = 1 ; i <= ((n+1) / 2)+1 ; i++ )
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }
    if (n%2 == 0 )
    {
        int temp = ( W(n/2)*(W(n/2)+1) ) / 2;
        for ( int i =1 ; i<= (n/2)-1 ; i++)
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }






}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0105, 2024-11-02 14:53:12, PPPPxxPxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0 ;
    if (n>= k && k > 1 )return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;

}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    if (n>= 2)
    {
        long long temp  = 3 * S(n-1) ;  // may be fix
        for ( int i = 1 ; i<= n ;i++)
        {
            temp +=  S(i) * S(n - i - 1) ;
        } 
        return temp ;



    }

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n == 1) return 1;
    if (n == 0) return 0;
    if (n%2 == 1 ) 
    {
        long long temp = 0 ;
        for (int i = 1 ; i <= ((n+1) / 2)+1 ; i++ )
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }
    if (n%2 == 0 )
    {
        long long temp = ( W(n/2)*(W(n/2)+1) ) / 2;
        for ( int i =1 ; i<= (n/2)-1 ; i++)
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }






}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0106, 2024-11-02 14:54:13, PPPPxxPxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0 ;
    if (n>= k && k > 1 )return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;

}
long long S(long long n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    if (n>= 2)
    {
        long long temp  = 3 * S(n-1) ;  // may be fix
        for ( int i = 1 ; i<= n ;i++)
        {
            temp +=  S(i) * S(n - i - 1) ;
        } 
        return temp ;



    }

}
long long W(long long n) {         // Wedderburn–Etherington Number

    if (n == 1) return 1;
    if (n == 0) return 0;
    if (n%2 == 1 ) 
    {
        long long temp = 0 ;
        for (int i = 1 ; i <= ((n+1) / 2)+1 ; i++ )
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }
    if (n%2 == 0 )
    {
        long long temp = ( W(n/2)*(W(n/2)+1) ) / 2;
        for ( int i =1 ; i<= (n/2)-1 ; i++)
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }






}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0107, 2024-11-02 14:57:43, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0 ;
    if (n>= k && k > 1 )return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;

}
long long S(long long n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    if (n>= 2)
    {
        long long temp  = 3 * S(n-1) ;  // may be fix
        for ( int i = 1 ; i<= n - 2;i++)
        {
            temp +=  S(i) * S(n - i - 1) ;
        } 
        return temp ;



    }

}
long long W(long long n) {         // Wedderburn–Etherington Number

    if (n == 1) return 1;
    if (n == 0) return 0;
    if (n%2 == 1 ) 
    {
        long long temp = 0 ;
        for (int i = 1 ; i <= ((n+1) / 2)+1 ; i++ )
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }
    if (n%2 == 0 )
    {
        long long temp = ( W(n/2)*(W(n/2)+1) ) / 2;
        for ( int i =1 ; i<= (n/2)-1 ; i++)
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }






}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0108, 2024-11-02 14:59:06, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0 ;
    if (n>= k && k > 1 )return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;

}
long long S(long long n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    if (n>= 2)
    {
        long long temp  = 3 * S(n-1) ;  // may be fix
        for ( int i = 1 ; i<= n - 2;i++)
        {
            temp +=  S(i) * S(n - i - 1) ;
        } 
        return temp ;



    }

}
long long W(long long n) {         // Wedderburn–Etherington Number

    if (n == 1) return 1;
    if (n == 0) return 0;
    if (n%2 == 1 ) 
    {
        long long temp = 0 ;
        for (int i = 1 ; i <= ((n+1) / 2) -1 ; i++ )
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }
    if (n%2 == 0 )
    {
        long long temp = ( W(n/2)*(W(n/2)+1) ) / 2;
        for ( int i =1 ; i<= (n/2)-1 ; i++)
        {
            temp += W(i)  * W(n-i) ;
        }
        return temp ;
    }






}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0109, 2024-11-02 09:20:31, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k == 0)
{
    return 1;
}
else if(k>n)
{
    return 0;
}
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0)
{
    return 1;
}
else if(n==1)
{
    return 2;
}
int sum=0, k;
for(k=1;k<=n-2;k++)
{
    sum += S(k)*S(n-k-1);
}
return sum + 3*S(n-1);
}
long long W(int n) { // Wedderburn–Etherington Number
int sum = 0,i;
if(n==0)
{
    return 0;
}
else if(n==1)
{
    return 1;
}
else if(n%2 ==0)
{
    for(i=1;i<=(n/2)+1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum + (W(n/2)*(W(n/2) + 1))/2;
}
else if(n%2 == 1)
{
    for(i=1;((n+1)/2)+1;i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0110, 2024-11-02 09:24:32, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k == 0)
{
    return 1;
}
else if(k>n)
{
    return 0;
}
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0)
{
    return 1;
}
else if(n==1)
{
    return 2;
}
int sum=0, k;
for(k=1;k<=n-2;k++)
{
    sum += S(k)*S(n-k-1);
}
return sum + 3*S(n-1);
}
long long W(int n) { // Wedderburn–Etherington Number

if(n==0)
{
    return 0;
}
else if(n==1)
{
    return 1;
}
else if(n%2 ==0)
{
    int sum = 0,i;
    for(i=1;i<=(n/2)+1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum + (W(n/2)*(W(n/2) + 1))/2;
}
int sum1 = 0,j;
for(j=1;((n+1)/2)+1;j++)
{
    sum1 += W(j)*W(n-j);
}
return sum1;

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0111, 2024-11-02 09:26:37, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k == 0)
{
    return 1;
}
else if(k>n)
{
    return 0;
}
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0)
{
    return 1;
}
else if(n==1)
{
    return 2;
}
long long sum=0, k;
for(k=1;k<=n-2;k++)
{
    sum += S(k)*S(n-k-1);
}
return sum + 3*S(n-1);
}
long long W(int n) { // Wedderburn–Etherington Number

if(n==0)
{
    return 0;
}
else if(n==1)
{
    return 1;
}
else if(n%2 ==0)
{
    long long sum = 0,i;
    for(i=1;i<=(n/2)+1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum + (W(n/2)*(W(n/2) + 1))/2;
}
long long sum1 = 0,j;
for(j=1;((n+1)/2)+1;j++)
{
    sum1 += W(j)*W(n-j);
}
return sum1;

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0112, 2024-11-02 09:34:37, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k == 0)
{
    return 1;
}
else if(k>n)
{
    return 0;
}
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0)
{
    return 1;
}
else if(n==1)
{
    return 2;
}
long long sum=0, k;
for(k=1;k<=n-2;k++)
{
    sum += S(k)*S(n-k-1);
}
return sum + 3*S(n-1);
}
long long W(int n) { // Wedderburn–Etherington Number

if(n==0)
{
    return 0;
}
else if(n==1)
{
    return 1;
}
else if(n%2 ==0)
{
    long long sum = 0,i;
    for(i=1;i<=(n/2)-1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum + (W(n/2)*(W(n/2) + 1))/2;
}
long long sum1 = 0,j;
for(j=1;((n+1)/2)+1;j++)
{
    sum1 += W(j)*W(n-j);
}
return sum1;

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0113, 2024-11-02 09:35:17, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k == 0)
{
    return 1;
}
else if(k>n)
{
    return 0;
}
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0)
{
    return 1;
}
else if(n==1)
{
    return 2;
}
long long sum=0, k;
for(k=1;k<=n-2;k++)
{
    sum += S(k)*S(n-k-1);
}
return sum + 3*S(n-1);
}
long long W(int n) { // Wedderburn–Etherington Number

if(n==0)
{
    return 0;
}
else if(n==1)
{
    return 1;
}
else if(n%2 ==0)
{
    long long sum = 0,i;
    for(i=1;i<=(n/2)-1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum + (W(n/2)*(W(n/2) + 1))/2;
}
long long sum1 = 0,j;
for(j=1;((n+1)/2)-1;j++)
{
    sum1 += W(j)*W(n-j);
}
return sum1;

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0114, 2024-11-02 09:41:32, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k == 0)
{
    return 1;
}
else if(k>n)
{
    return 0;
}
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0)
{
    return 1;
}
else if(n==1)
{
    return 2;
}
long long sum=0, k;
for(k=1;k<=n-2;k++)
{
    sum += S(k)*S(n-k-1);
}
return sum + 3*S(n-1);
}
long long W(int n) { // Wedderburn–Etherington Number

if(n==0)
{
    return 0;
}
else if(n==1)
{
    return 1;
}
else if(n%2 ==0)
{
    long long sum = 0,i;
    for(i=1;i<=(n/2)-1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum + (W(n/2)*(W(n/2) + 1))/2;
}
long long sum = 0,i;
for(i=1;i<=((n+1)/2)-1;i++)
{
    sum += W(i)*W(n-i);
}
return sum;

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0115, 2024-11-02 12:38:51, PPPP------ (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long sum = 0;
        for(long long i=1;i<n-2;i++){
            sum += S(i)*S(n-i-1);
        }
        return sum + 3*S(n-1);
        
    } 
}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0116, 2024-11-02 12:39:03, PPPxxxxxx- (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    // if(n == 0) return 1;
    // if(n == 1) return 2;
    // if(n >= 2){
    //     long long sum = 0;
    //     for(long long i=1;i<n-2;i++){
    //         sum += S(i)*S(n-i-1);
    //     }
    //     return sum + 3*S(n-1);
        
    // } 
}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0117, 2024-11-02 12:44:26, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long sum = 0;
        for(long long i=1;i<=n-2;i++){
            sum += S(i)*S(n-i-1);
        }
        return sum + 3*S(n-1);
        
    } 
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;

    if(n%2 == 0){
        long long sum =0;
        long long m = n/2;
        for(long long i=1;i<=m-1;i++){
            sum += W(i)*W(n-i);
        }
        return  (W(m)*W(m+1))/2 + sum;
    }else{
        long long sum =0;
        long long k = (n+1)/2;
        for(long long i=1;i<= k-1;i++ ){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0118, 2024-11-02 12:44:39, PPPPPP---- (60%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long sum = 0;
        for(long long i=1;i<=n-2;i++){
            sum += S(i)*S(n-i-1);
        }
        return sum + 3*S(n-1);
        
    } 
}
long long W(int n) { // Wedderburn–Etherington Number
    // if(n == 0) return 0;
    // if(n == 1) return 1;

    // if(n%2 == 0){
    //     long long sum =0;
    //     long long m = n/2;
    //     for(long long i=1;i<=m-1;i++){
    //         sum += W(i)*W(n-i);
    //     }
    //     return  (W(m)*W(m+1))/2 + sum;
    // }else{
    //     long long sum =0;
    //     long long k = (n+1)/2;
    //     for(long long i=1;i<= k-1;i++ ){
    //         sum += W(i)*W(n-i);
    //     }
    //     return sum;
    // }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0119, 2024-11-02 12:45:34, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long sum = 0;
        for(long long i=1;i<=n-2;i++){
            sum += S(i)*S(n-i-1);
        }
        return sum + 3*S(n-1);
        
    } 
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n >= 2){
        if(n%2 == 0){
        long long sum =0;
        long long m = n/2;
        for(long long i=1;i<=m-1;i++){
            sum += W(i)*W(n-i);
        }
        return  (W(m)*W(m+1))/2 + sum;
    }else{
        long long sum =0;
        long long k = (n+1)/2;
        for(long long i=1;i<= k-1;i++ ){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0120, 2024-11-02 12:50:45, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long sum = 0;
        for(long long i=1;i<=n-2;i++){
            sum += S(i)*S(n-i-1);
        }
        return sum + 3*S(n-1);
        
    } 
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n >= 2){
        if(n%2 == 0){
        long long sum =0;
        long long m = n/2;
        for(long long i=1;i<=m-1;i++){
            sum += (W(i)*W(n-i));
        }
        return  (W(m)*(W(m)+1))/2 + sum;
        }else if (n%2 == 1){
        long long su =0;
        long long k = (n+1)/2;
        for(long long i=1;i<= k-1;i++ ){
            su += (W(i)*W(n-i));
        }
        return su;
        }
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0121, 2024-11-02 12:45:35, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0) return 1;
if(k>n)return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
if(n == 0) return 1;
if(n==1) return 2;
long long t = 0;
for(int k = 1;k<=n-2;k++){
    t += S(k) * S(n-k-1);
}
return 3*S(n-1) + t;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n ==0) return 0;
if(n == 1) return 1;
if(n%2 == 0){
    long long x= 0;
    for(int i =i;i<=(n/2)-1;i++){
        x += W(i)*W(n-1);
    }
    return (W(n/2)*(W(n/2)+1))/2 + x;
}
if(n%2 != 0){
    long long y = 0;
    for(int i = 1;i<= (n/2)-1;i++){
        y += W(i)*W(n-1);
    }
    return y;
}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0122, 2024-11-02 12:49:17, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0) return 1;
if(k>n)return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
if(n == 0) return 1;
if(n==1) return 2;
long long t = 0;
for(int k = 1;k<=n-2;k++){
    t += S(k) * S(n-k-1);
}
return 3*S(n-1) + t;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n ==0) return 0;
if(n == 1) return 1;
if(n%2 == 0){
    long long x= 0;
    for(int i =1;i<=(n/2)-1;i++){
        x += W(i)*W(n-1);
    }
    return (W(n/2)*(W(n/2)+1))/2 + x;
}
if(n%2 != 0){
    long long y = 0;
    for(int i = 1;i<= (n/2)-1;i++){
        y += W(i)*W(n-1);
    }
    return y;
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0123, 2024-11-02 12:51:10, Compilation error (0%)

BossPaul#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0) return 1;
if(k>n)return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
if(n == 0) return 1;
if(n==1) return 2;
long long t = 0;
for(int k = 1;k<=n-2;k++){
    t += S(k) * S(n-k-1);
}
return 3*S(n-1) + t;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n ==0) return 0;
if(n == 1) return 1;
if(n%2 == 0){
    long long x= 0;
    for(int i =1;i<=(n/2)-1;i++){
        x += W(i)*W(n-1);
    }
    return (W(n/2)*(W(n/2)+1))/2 + x;
}
    long long y = 0;
    for(int i = 1;i<= (n/2)-1;i++){
        y += W(i)*W(n-1);
    }
    return y;
}



int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0124, 2024-11-02 12:51:30, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0) return 1;
if(k>n)return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
if(n == 0) return 1;
if(n==1) return 2;
long long t = 0;
for(int k = 1;k<=n-2;k++){
    t += S(k) * S(n-k-1);
}
return 3*S(n-1) + t;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n ==0) return 0;
if(n == 1) return 1;
if(n%2 == 0){
    long long x= 0;
    for(int i =1;i<=(n/2)-1;i++){
        x += W(i)*W(n-1);
    }
    return (W(n/2)*(W(n/2)+1))/2 + x;
}
    long long y = 0;
    for(int i = 1;i<= (n/2)-1;i++){
        y += W(i)*W(n-1);
    }
    return y;
}



int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0125, 2024-11-02 14:23:28, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0) return 1;
if(k>n)return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
if(n == 0) return 1;
if(n==1) return 2;
long long t = 0;
for(int k = 1;k<=n-2;k++){
    t += S(k) * S(n-k-1);
}
return 3*S(n-1) + t;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n ==0) return 0;
if(n == 1) return 1;
if(n%2 == 0){
    long long x= 0;
    for(int i =1;i<=(n/2)-1;i++){
        x += W(i)*W(n-i);
    }
    return (W(n/2)*(W(n/2)+1))/2 + x;
}
    long long y = 0;
    for(int i = 1;i<= (n/2)-1;i++){
        y += W(i)*W(n-1);
    }
    return y;
}



int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0126, 2024-11-02 14:28:49, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0) return 1;
if(k>n)return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
if(n == 0) return 1;
if(n==1) return 2;
long long t = 0;
for(int k = 1;k<=n-2;k++){
    t += S(k) * S(n-k-1);
}
return 3*S(n-1) + t;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n ==0) return 0;
if(n == 1) return 1;

if(n%2 == 0){
    long long x= 0;
    for(int i = 1; i <= (n/2)-1;i++){
        x += W(i)*W(n-i);
    }
    return (W(n/2)*(W(n/2)+1))/2 + x;
}
    long long y = 0;
    for(int i = 1;i<= (((n+1)/2)-1);i++){
        y += W(i)*W(n-i);
    }
    return y;
}



int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0127, 2024-11-02 13:22:57, PPPPPPP--- (70%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
if(k==0){
return 1;
}
if(k>n){
return 0;
}
if(1<k<=n){
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
}
long long S(int n) {
if(n==0){
return 1;
}
if(n==1){
return 2;
}
long long temp=0;
if(n>=2){
for(int k=1;k<n-1;k++){
temp = S(k)*S(n-k-1)+temp;
}
return (3*S(n-1))+temp;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0){
return 0;
}
if(n==1){
return 1;
}
if(n%2==0){
long long tomp;
for(int i=1;i<n/2;i++){
tomp = W(i)*W(n-i);
}
return (W(n/2)*(W(n/2)+1))/2 + tomp;
}

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0128, 2024-11-02 13:24:54, PPPPPPP--- (70%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
if(k==0){
return 1;
}
if(k>n){
return 0;
}
if(1<k<=n){
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
}
long long S(int n) {
if(n==0){
return 1;
}
if(n==1){
return 2;
}
long long temp=0;
if(n>=2){
for(int k=1;k<n-1;k++){
temp = S(k)*S(n-k-1)+temp;
}
return (3*S(n-1))+temp;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0){
return 0;
}
if(n==1){
return 1;
}
if(n%2==0){
long long tomp=0;
for(int i=1;i<n/2;i++){
tomp = W(i)*W(n-i);
}
return (W(n/2)*(W(n/2)+1))/2 + tomp;
}
if(n%2==1){
long long tuk=0;
for(int i=1;i<(n+1)/2;i++){
 tuk=(W(i)*W(n-i));
}
return tuk;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0129, 2024-11-02 13:25:42, PPPPPPP--- (70%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
if(k==0){
return 1;
}
if(k>n){
return 0;
}
if(1<k<=n){
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
}
long long S(int n) {
if(n==0){
return 1;
}
if(n==1){
return 2;
}
long long temp=0;
if(n>=2){
for(int k=1;k<n-1;k++){
temp = S(k)*S(n-k-1)+temp;
}
return (3*S(n-1))+temp;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0){
return 0;
}
if(n==1){
return 1;
}
if(n%2==0){
long long tomp=0;
for(int i=1;i<n/2;i++){
tomp = W(i)*W(n-i);
}
return (W(n/2)*(W(n/2)+1))/2 + tomp;
}
if(n%2==1){
long long tuk=0;
for(int i=1;i<(n+1)/2;i++){
 tuk=(W(i)*W(n-i));
}
return tuk;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0130, 2024-11-02 13:31:23, PPPPPPP--- (70%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
if(k==0){
return 1;
}
if(k>n){
return 0;
}
if(1<k<=n){
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
}
long long S(int n) {
if(n==0){
return 1;
}
if(n==1){
return 2;
}
long long temp=0;
if(n>=2){
for(int k=1;k<n-1;k++){
temp = S(k)*S(n-k-1)+temp;
}
return (3*S(n-1))+temp;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0){
return 0;
}
if(n==1){
return 1;
}
if(n%2==0){
long long tomp=0;
for(int i=1;i<n/2;i++){
tomp = W(i)*W(n-i);
}
return (W(n/2)*(W(n/2)+1))/2 + tomp;
}

if(n%2==1){
long long tuk=0;
for(int i=1;i<(n+1)/2;i++){
 tuk=(W(i)*W(n-i));
}
return tuk;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0131, 2024-11-02 13:31:27, PPPPPPP--- (70%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
if(k==0){
return 1;
}
if(k>n){
return 0;
}
if(1<k<=n){
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
}
long long S(int n) {
if(n==0){
return 1;
}
if(n==1){
return 2;
}
long long temp=0;
if(n>=2){
for(int k=1;k<n-1;k++){
temp = S(k)*S(n-k-1)+temp;
}
return (3*S(n-1))+temp;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0){
return 0;
}
if(n==1){
return 1;
}
if(n%2==0){
long long tomp=0;
for(int i=1;i<n/2;i++){
tomp = W(i)*W(n-i);
}
return (W(n/2)*(W(n/2)+1))/2 + tomp;
}

if(n%2==1){
long long tuk=0;
for(int i=1;i<(n+1)/2;i++){
 tuk=(W(i)*W(n-i));
}
return tuk;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0132, 2024-11-02 13:44:16, PPPPPPPPPP (100%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
if(k==0){
return 1;
}
if(k>n){
return 0;
}
if(1<k<=n){
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
}
long long S(int n) {
if(n==0){
return 1;
}
if(n==1){
return 2;
}
long long temp=0;
if(n>=2){
for(int k=1;k<n-1;k++){
temp = S(k)*S(n-k-1)+temp;
}
return (3*S(n-1))+temp;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0){
return 0;
}
if(n==1){
return 1;
}
if(n%2==0){
long long tomp=0;
for(int i=1;i<n/2;i++){
tomp = W(i)*W(n-i)+tomp;
}
return (W(n/2)*(W(n/2)+1))/2 + tomp;
}

if(n%2==1){
long long tuk=0;
for(int i=1;i<(n+1)/2;i++){
 tuk=(W(i)*W(n-i))+tuk;
}
return tuk;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0133, 2024-11-02 09:25:27, PPPxxxxxx- (30%)

#include <iostream>
#include<cmath>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }

}
long long S(int n) {         // Schroder Number
    if(n=0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else{
        
    }

}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0134, 2024-11-02 09:30:29, PPPTTTP--T (40%)

#include <iostream>
#include<cmath>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }

}
long long S(int n) {         // Schroder Number
    if(n=0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else{
        int x=0;
        for(int k=1;k<=n-2;k++){
            x+= (S(k)*S(n-k-1));
        }
        return (3*S(n-1)+x);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n%2==0){
        int x=0;
        for(int i=1;i<=(n/2-1);i++){
            x+= (W(i)*W(n-i));
        }
        return (W(n/2)*(W(n/2)+1) + x);
    }else{
        int x=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            x+= W(i)*W(n-i);
        }
        return x;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0135, 2024-11-02 09:32:10, PPPPPPP--- (70%)

#include <iostream>
#include<cmath>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else{
        int x=0;
        for(int k=1;k<=n-2;k++){
            x+= (S(k)*S(n-k-1));
        }
        return (3*S(n-1)+x);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n%2==0){
        int x=0;
        for(int i=1;i<=(n/2-1);i++){
            x+= (W(i)*W(n-i));
        }
        return (W(n/2)*(W(n/2)+1) + x);
    }else{
        int x=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            x+= W(i)*W(n-i);
        }
        return x;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0136, 2024-11-02 09:34:11, PPPPPPP--- (70%)

#include <iostream>
#include<cmath>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else{
        int x=0;
        for(int k=1;k<=n-2;k++){
            x+= (S(k)*S(n-k-1));
        }
        return (3*S(n-1)+x);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n%2==0){
        int x=0;
        for(int i=1;i<=((n/2)-1);i++){
            x+= (W(i)*W(n-i));
        }
        return (W(n/2)*(W(n/2)+1) + x);
    }else if(n%2!=0){
        int x=0;
        for(int i=1;i<=(((n+1)/2)-1);i++){
            x+= W(i)*W(n-i);
        }
        return x;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0137, 2024-11-02 09:35:41, PPPPPPPPPP (100%)

#include <iostream>
#include<cmath>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else{
        int x=0;
        for(int k=1;k<=n-2;k++){
            x+= (S(k)*S(n-k-1));
        }
        return (3*S(n-1)+x);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n%2==0){
        int x=0;
        for(int i=1;i<=((n/2)-1);i++){
            x+= (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)+1))/2+ x);
    }else if(n%2!=0){
        int x=0;
        for(int i=1;i<=(((n+1)/2)-1);i++){
            x+= W(i)*W(n-i);
        }
        return x;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0138, 2024-11-02 10:55:42, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k - 1) + T(n - 1, k -1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long result = 0;
    result += 3 * S(n - 1);
    for (int i = 1; i < n - 1; i++)
    {
        result += S(i) * S(n - i -1);
    }
    return result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    long long result = 0;
    if (n % 2 == 0)
    {
        result += W(n / 2)*(W(n / 2) + 1);
        for (int i = 1; i < n / 2; i++)
        {
            result += W(i) * W(n - i);
        }
    }
    else
    {
        for (int i = 1; i < (n+1/2); i++)
        {
            result += W(i) * W(n - i);
        }
    }
    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0139, 2024-11-02 10:57:11, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k - 1) + T(n - 1, k -1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long result = 0;
    result += 3 * S(n - 1);
    for (int i = 1; i < n - 1; i++)
    {
        result += S(i) * S(n - i -1);
    }
    return result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    long long result = 0;
    if (n % 2 == 0)
    {
        result += (W(n / 2)*(W(n / 2) + 1)) / 2;
        for (int i = 1; i < n / 2; i++)
        {
            result += W(i) * W(n - i);
        }
    }
    else
    {
        for (int i = 1; i < (n+1/2); i++)
        {
            result += W(i) * W(n - i);
        }
    }
    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0140, 2024-11-02 10:58:15, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k - 1) + T(n - 1, k -1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long result = 0;
    result += 3 * S(n - 1);
    for (int i = 1; i < n - 1; i++)
    {
        result += S(i) * S(n - i -1);
    }
    return result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    long long result = 0;
    if (n % 2 == 0)
    {
        result += (W(n / 2)*(W(n / 2) + 1)) / 2;
        for (int i = 0; i < n / 2; i++)
        {
            result += W(i) * W(n - i);
        }
    }
    else
    {
        for (int i = 0; i < (n+1/2); i++)
        {
            result += W(i) * W(n - i);
        }
    }
    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0141, 2024-11-02 10:58:46, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k - 1) + T(n - 1, k -1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long result = 0;
    result += 3 * S(n - 1);
    for (int i = 1; i < n - 1; i++)
    {
        result += S(i) * S(n - i -1);
    }
    return result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    long long result = 0;
    if (n % 2 == 0)
    {
        result += (W(n / 2)*(W(n / 2) + 1)) / 2;
        for (int i = 1; i < n / 2 - 1; i++)
        {
            result += W(i) * W(n - i);
        }
    }
    else
    {
        for (int i = 1; i < (n+1/2) - 1; i++)
        {
            result += W(i) * W(n - i);
        }
    }
    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0142, 2024-11-02 11:57:49, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k - 1) + T(n - 1, k -1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long result = 0;
    result += 3 * S(n - 1);
    for (int i = 1; i < n - 1; i++)
    {
        result += S(i) * S(n - i -1);
    }
    return result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    long long result = 0;
    if (n % 2 == 0)
    {
        result += ((W(n / 2))*(W(n / 2) + 1)) / 2;
        for (int i = 1; i < n / 2; i++)
        {
            result += W(i) * W(n - i);
        }
    }
    else if (n % 2 == 1)
    {
        for (int i = 1; i < ((n+1)/2); i++)
        {
            result += W(i) * W(n - i);
        }
    }
    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0143, 2024-11-02 09:30:42, PPPPTTP--T (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) 
        return 1;
    if(k > n) 
        return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         // Schroder Number
    if(n == 0)
        return 1;
    if(n == 1)
        return 2;
    long long sum = 0;
    for(int k=0;k<=n-2;k++){
        sum += S(k)*S(k-n-1);
    }

    return sum+(3*S(n-1));


}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
        return 0;
    if(n == 1)
        return 1;
    if(n % 2 == 0){
        long long sum = 0;
        for(int i=1;i<((n/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum+((W(n/2)*(W(n/2)+1))/2);
    }
    if(n % 2 == 1){
        long long sum = 0;
        for(int i=1;i<(((n+1)/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0144, 2024-11-02 09:34:53, PPPPTTP--T (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) 
        return 1;
    if(k > n) 
        return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         // Schroder Number
    if(n == 0)
        return 1;
    if(n == 1)
        return 2;
    int sum = 0;
    for(int k=0;k<=n-2;k++){
        sum += S(k)*S(k-n-1);
    }

    return sum+(3*S(n-1));


}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
        return 0;
    if(n == 1)
        return 1;
    if(n % 2 == 0){
        int sum = 0;
        for(int i=1;i<((n/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum+((W(n/2)*(W(n/2)+1))/2);
    }
    if(n % 2 == 1){
        int sum = 0;
        for(int i=1;i<(((n+1)/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0145, 2024-11-02 11:50:33, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) 
        return 1;
    if(k > n) 
        return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0)
        return 1;
    if(n == 1)
        return 2;
    long long sum = 0;
    for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
    }
    return sum+(3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
        return 0;
    if(n == 1)
        return 1;
    if(n % 2 == 0){
        long long sum = 0;
        for(int i=1;i<((n/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum+((W(n/2)*(W(n/2)+1))/2);
    }
    if(n % 2 == 1){
        long long sum = 0;
        for(int i=1;i<(((n+1)/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0146, 2024-11-02 11:51:57, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) 
        return 1;
    if(k > n) 
        return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0)
        return 1;
    if(n == 1)
        return 2;
    long long sum = 0;
    for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
    }
    return sum+(3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
        return 0;
    if(n == 1)
        return 1;
    if(n % 2 == 0 && n!=0){
        long long sum = 0;
        for(int i=1;i<((n/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum+((W(n/2)*(W(n/2)+1))/2);
    }
    if(n % 2 == 1 && n!=1){
        long long sum = 0;
        for(int i=1;i<(((n+1)/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0147, 2024-11-02 11:53:12, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) 
        return 1;
    if(k > n) 
        return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0)
        return 1;
    if(n == 1)
        return 2;
    long long sum = 0;
    for(int k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
    }
    return sum+(3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
        return 0;
    if(n == 1)
        return 1;
    if(n % 2 == 0 && n != 0) {
        long long sum = 0;
        for(int i=1;i<=((n/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum+((W(n/2)*(W(n/2)+1))/2);
    }
    if(n % 2 == 1 && n != 1){
        long long sum = 0;
        for(int i=1;i<=(((n+1)/2)-1);i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0148, 2024-11-02 14:44:30, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    int res = 0;
    res += T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (1 < k && 1 < n && k <= n){
        return res;
    }
    
}
long long S(int n) {
    int sum = 0; // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if( n >= 2){
    for(int k = 1; k <= n-2;k++){
        sum += (S(k)*S(n-k-1));
    }
    int ans =  (3*S(n-1))+sum;
    return ans;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    int sum = 0;
    if(n%2 == 0){
        for(int i = 1; i <= (n/2)-1; i++){
            sum += W(i)*(W(n-i));
        }
        int ans = W(n/2)*(W((n/2)+1));
        ans /= 2;
        ans += sum;
        return ans;
    }
    else if(n%2 == 1){
        for(int i = 1; i < (n+1)/2; i++){
            sum += W(i)*(W(n-i));
        }
        return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0149, 2024-11-02 14:45:29, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    int res = 0;
    res += T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (1 < k && 1 < n && k <= n){
        return res;
    }
    
}
long long S(int n) {
    int sum = 0; // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if( n >= 2){
    for(int k = 1; k <= n-2;k++){
        sum += (S(k)*S(n-k-1));
    }
    int ans =  (3*S(n-1))+sum;
    return ans;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    int sum = 0;
    if(n%2 == 0 && n >= 0){
        for(int i = 1; i <= (n/2)-1; i++){
            sum += W(i)*(W(n-i));
        }
        int ans = W(n/2)*(W((n/2)+1));
        ans /= 2;
        ans += sum;
        return ans;
    }
    else if(n%2 == 1){
        for(int i = 1; i < (n+1)/2; i++){
            sum += W(i)*(W(n-i));
        }
        return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0150, 2024-11-02 14:57:45, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    int res = 0;
    res += T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (1 < k && 1 < n && k <= n){
        return res;
    }
    
}
long long S(int n) {
    long long sum = 0; // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if( n >= 2){
    for(int k = 1; k <= n-2;k++){
        sum += (S(k)*S(n-k-1));
    }
    long long ans =  (3*S(n-1))+sum;
    return ans;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    long long sum = 0;
    if(n%2 == 0 && n >= 0){
        for(int i = 1; i <= (n/2)-1; i++){
            sum += W(i)*(W(n-i));
        }
        long long ans = W(n/2)*(W((n/2)+1));
        ans /= 2;
        ans += sum;
        return ans;
    }
    else if(n%2 == 1){
        for(int i = 1; i < (n+1)/2; i++){
            sum += W(i)*(W(n-i));
        }
        return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0151, 2024-11-02 14:58:45, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    long long res = 0;
    res += T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (1 < k && 1 < n && k <= n){
        return res;
    }
    
}
long long S(int n) {
    long long sum = 0; // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if( n >= 2){
    for(int k = 1; k <= n-2;k++){
        sum += (S(k)*S(n-k-1));
    }
    long long ans =  (3*S(n-1))+sum;
    return ans;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    int sum = 0;
    if(n%2 == 0 && n >= 0){
        for(int i = 1; i <= (n/2)-1; i++){
            sum += W(i)*(W(n-i));
        }
        int ans = W(n/2)*(W((n/2)+1));
        ans /= 2;
        ans += sum;
        return ans;
    }
    else if(n%2 == 1){
        for(int i = 1; i < (n+1)/2; i++){
            sum += W(i)*(W(n-i));
        }
        return sum;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0152, 2024-11-02 15:09:14, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    long long res = 0;
    res += T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if (1 < k && 1 < n && k <= n){
        return res;
    }
    
}
long long S(int n) {
    long long sum = 0; // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if( n >= 2){
    for(int k = 1; k <= n-2;k++){
        sum += (S(k)*S(n-k-1));
    }
    long long ans = (3*S(n-1))+sum;
    return ans;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    long long sum = 0;
    if(n%2 == 0 && n >= 0){
        for(int i = 1; i <= (n/2)-1; i++){
            sum += W(i)*(W(n-i));
        }
        long long ans = W(n/2)*(W(n/2)+1);
        ans /= 2;
        ans += sum;
        return ans;
    }
    else if(n%2 == 1){
        for(long long i = 1; i < (n+1)/2; i++){
            sum += W(i)*(W(n-i));
        }
        return sum;
    }   

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0153, 2024-11-02 12:44:26, P--PxxPPPx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    
    if (k > n)
    {
        return 0;
    }
    if (k == 0)
    {
        return 1;
    }
    return T(n,k-1) + T(n-1,k-1), T(n-1,k);
}
long long S(int n) { 
    
    if (n == 0) return 1;
    if (n == 1) return 2;

    long long int sum = 0;
    for (int i = 0; i <= n-2; i++)
    {
        sum += S(n) * S(n-i-1);
    }
    return sum + 3 * S(n-1);
}
long long W(int n) { 
    
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n%2 == 0)
    {
        long long int sumEven = 0;
        for (int i = 1; i <= n/2 - 1; i++)
        {
            sumEven += W(i) * W(n-i);
        }
        return (W(n/2) * (W(n/2) + 1))/2 + sumEven;
    }
    if (n%2 == 1)
    {
        long long int sumOdd = 0;
        for (int i = 1; i <= (n+1)/2 - 1; i++)
        {
            sumOdd += W(i) * W(n-i);
        }
        return sumOdd;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0154, 2024-11-02 14:27:05, P--PxxPPPx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    
    if (k > n)
    {
        return 0;
    }
    if (k == 0)
    {
        return 1;
    }
    return T(n,k-1) + T(n-1,k-1), T(n-1,k);
}
long long S(int n) { 
    
    if (n == 0) return 1;
    if (n == 1) return 2;

    long long int sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += S(n) * S(n-i-1);
    }
    return sum + 3 * S(n-1);
}
long long W(int n) { 
    
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n%2 == 0)
    {
        long long int sumEven = 0;
        for (int i = 1; i <= n/2 - 1; i++)
        {
            sumEven += W(i) * W(n-i);
        }
        return (W(n/2) * (W(n/2) + 1))/2 + sumEven;
    }
    if (n%2 == 1)
    {
        long long int sumOdd = 0;
        for (int i = 1; i <= (n+1)/2 - 1; i++)
        {
            sumOdd += W(i) * W(n-i);
        }
        return sumOdd;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0155, 2024-11-02 14:29:02, P--PPPPPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    
    if (k > n)
    {
        return 0;
    }
    if (k == 0)
    {
        return 1;
    }
    return T(n,k-1) + T(n-1,k-1), T(n-1,k);
}
long long S(int n) { 
    
    if (n == 0) return 1;
    if (n == 1) return 2;

    long long int sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += S(i) * S(n-i-1);
    }
    return sum + 3 * S(n-1);
}
long long W(int n) { 
    
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n%2 == 0)
    {
        long long int sumEven = 0;
        for (int i = 1; i <= n/2 - 1; i++)
        {
            sumEven += W(i) * W(n-i);
        }
        return (W(n/2) * (W(n/2) + 1))/2 + sumEven;
    }
    if (n%2 == 1)
    {
        long long int sumOdd = 0;
        for (int i = 1; i <= (n+1)/2 - 1; i++)
        {
            sumOdd += W(i) * W(n-i);
        }
        return sumOdd;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0156, 2024-11-02 14:32:38, PxxPPPPPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    
    if (k > n)
    {
        return 0;
    }
    if (k == 0)
    {
        return 1;
    }
    if (1 < k && k <= n)
    return T(n,k-1) + T(n-1,k-1), T(n-1,k);
}
long long S(int n) { 
    
    if (n == 0) return 1;
    if (n == 1) return 2;

    long long int sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += S(i) * S(n-i-1);
    }
    return sum + 3 * S(n-1);
}
long long W(int n) { 
    
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n%2 == 0)
    {
        long long int sumEven = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sumEven += W(i) * W(n-i);
        }
        return (W(n/2) * (W(n/2) + 1))/2 + sumEven;
    }
    if (n%2 == 1)
    {
        long long int sumOdd = 0;
        for (int i = 1; i <= (n+1)/2 - 1; i++)
        {
            sumOdd += W(i) * W(n-i);
        }
        return sumOdd;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0157, 2024-11-02 14:38:12, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    
    if (k > n)
    {
        return 0;
    }
    if (k == 0)
    {
        return 1;
    }
    if (1 < k && k <= n)
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) { 
    
    if (n == 0) return 1;
    if (n == 1) return 2;

    long long int sum = 0;
    for (int i = 1; i <= n-2; i++)
    {
        sum += S(i) * S(n-i-1);
    }
    return sum + 3 * S(n-1);
}
long long W(int n) { 
    
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n%2 == 0)
    {
        long long int sumEven = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sumEven += W(i) * W(n-i);
        }
        return (W(n/2) * (W(n/2) + 1))/2 + sumEven;
    }
    if (n%2 == 1)
    {
        long long int sumOdd = 0;
        for (int i = 1; i <= (n+1)/2 - 1; i++)
        {
            sumOdd += W(i) * W(n-i);
        }
        return sumOdd;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0158, 2024-11-02 09:35:08, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;
    else if (1<k && k<=n)
    {
        return T(n,k-1)+T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { 
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2)
    {
        long long a;
        for (int k=1; k<=(n/2)-1; k++)
        {
            a = a + S(k)*S(n-k-1);
        }
        return 3*S(n-1)+a;
    }
}
long long W(int n) {
    if(n==0)return 0;
    else if (n==1) return 1;
    else if (n%2==1)
    {
        long long a;
        for (int i=1; i<=((n+1)/2)-1; i++)
        {
            a = a + W(i)*W(n-i);
        }
        return a;
    }
    else if(n%2==0)
    {
        long long a;
        for (int i=1; i<=(n/2)-1; i++)
        {
            a = a + W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + a;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0159, 2024-11-02 09:36:42, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;
    else if (1<k && k<=n)
    {
        return T(n,k-1)+T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { 
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2)
    {
        long long a;
        for (int k=1; k<=n-2; k++)
        {
            a = a + S(k)*S(n-k-1);
        }
        return 3*S(n-1)+a;
    }
}
long long W(int n) {
    if(n==0)return 0;
    else if (n==1) return 1;
    else if (n%2==1)
    {
        long long a;
        for (int i=1; i<=((n+1)/2)-1; i++)
        {
            a = a + W(i)*W(n-i);
        }
        return a;
    }
    else if(n%2==0)
    {
        long long a;
        for (int i=1; i<=(n/2)-1; i++)
        {
            a = a + W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + a;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0160, 2024-11-02 09:39:08, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;
    else if (1<k && k<=n)
    {
        return T(n,k-1)+T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { 
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2)
    {
        long long a;
        for (int k=1; k<=n-2; k++)
        {
            a = a + S(k)*S(n-k-1);
        }
        return (3*S(n-1))+a;
    }
}
long long W(int n) {
    if(n==0)return 0;
    else if (n==1) return 1;
    else if (n%2==1 && n>2)
    {
        long long a;
        for (int i=1; i<=((n+1)/2)-1; i++)
        {
            a = a + (W(i)*W(n-i));
        }
        return a;
    }
    else if(n%2==0 && n>1)
    {
        long long a;
        for (int i=1; i<=(n/2)-1; i++)
        {
            a = a + (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)+1))/2) + a;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0161, 2024-11-02 10:59:25, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;
    else if (1<k && k<=n)
    {
        return T(n,k-1)+T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { 
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2)
    {
        long long a=0;
        for (int k=1; k<=n-2; k++)
        {
            a = a + S(k)*S(n-k-1);
        }
        return (3*S(n-1))+a;
    }
}
long long W(int n) {
    if(n==0)return 0;
    else if (n==1) return 1;
    else if (n%2==1 && n>2)
    {
        long long a=0;
        for (int i=1; i<=((n+1)/2)-1; i++)
        {
            a = a + (W(i)*W(n-i));
        }
        return a;
    }
    else if(n%2==0 && n>1)
    {
        long long a;
        for (int i=1; i<=(n/2)-1; i++)
        {
            a = a + (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)+1))/2) + a;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0162, 2024-11-02 11:00:14, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;
    else if (1<k && k<=n)
    {
        return T(n,k-1)+T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { 
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2)
    {
        long long a=0;
        for (int k=1; k<=n-2; k++)
        {
            a = a + S(k)*S(n-k-1);
        }
        return (3*S(n-1))+a;
    }
}
long long W(int n) {
    if(n==0)return 0;
    else if (n==1) return 1;
    else if (n%2==1 && n>2)
    {
        long long a=0;
        for (int i=1; i<=((n+1)/2)-1; i++)
        {
            a = a + (W(i)*W(n-i));
        }
        return a;
    }
    else if(n%2==0 && n>1)
    {
        long long a=0;
        for (int i=1; i<=(n/2)-1; i++)
        {
            a = a + (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)+1))/2) + a;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0163, 2024-11-02 12:43:51, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k>n) return 0;
    else if(k==0) return 1;
    if(n>=k)
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    int temp=0;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    for(int i=1;i<=n-2;i++){
        temp+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+temp;

}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    int temp=0;
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            W(i)*W(n-i);
        }
        return (W(n/2)*W(n/2-1))/2+temp;
    }
    else {
        for(int i=1;i<=(n+1)/2-1;i++){
            temp+=W(i)*W(n-i);
        }
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0164, 2024-11-02 12:46:50, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k>n) return 0;
    else if(k==0) return 1;
    if(n>=k)
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    int temp=0;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    for(int i=1;i<=n-2;i++){
        temp+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+temp;

}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    int temp=0;
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            temp+=W(i)*W(n-i);
        }
        return (W(n/2)*W(n/2-1))/2+temp;
    }
    else {
        for(int i=1;i<=(n+1)/2-1;i++){
            temp+=W(i)*W(n-i);
        }
        return temp;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0165, 2024-11-02 14:07:45, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;

    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    long long temp=0;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    for(int i=1;i<=n-2;i++){
        temp+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+temp;

}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    long long temp=0;
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            temp+=W(i)*W(n-i);
        }
        temp+=W(n/2)*W((n/2)-1)/2;
        return temp;
    }
    else {
        for(int i=1;i<=((n+1)/2)-1;i++){
            temp+=W(i)*W(n-i);
        }
        return temp;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0166, 2024-11-02 14:11:58, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;

    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    long long temp=0;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    for(int i=1;i<=n-2;i++){
        temp+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+temp;

}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    long long temp=0;
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            temp+=W(i)*W(n-i);
        }
        temp+=(W(n/2)*W((n/2))+1)/2;
        return temp;
    }
    else {
        for(int i=1;i<=((n+1)/2)-1;i++){
            temp+=W(i)*W(n-i);
        }
        return temp;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0167, 2024-11-02 14:12:52, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0) return 1;
    else if(k>n) return 0;

    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    long long temp=0;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    for(int i=1;i<=n-2;i++){
        temp+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+temp;

}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    long long temp=0;
    if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            temp+=W(i)*W(n-i);
        }
        temp+=(W(n/2)*(W((n/2))+1))/2;
        return temp;
    }
    else {
        for(int i=1;i<=((n+1)/2)-1;i++){
            temp+=W(i)*W(n-i);
        }
        return temp;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0168, 2024-11-02 12:38:11, PPPxxxxxx- (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
}

long long S(int n) { // Schroder Number

}

long long W(int n) { // Wedderburn–Etherington Number

}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0169, 2024-11-02 12:42:05, PPPPPP---- (60%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
}

long long S(int n) { // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++) {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}

long long W(int n) { // Wedderburn–Etherington Number

}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0170, 2024-11-02 12:47:10, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
}

long long S(int n) { // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++) {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}

long long W(int n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;

    if (n%2 == 0) {
        int sum = 0;
        for (int i = 0; i <= (n/2 -1); i++) {
            sum += W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2)+1)) / 2 +sum;
    }
    else {
        int sum = 0;
        for (int i = 0; i <= (n+1)/2-1; i++) {
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0171, 2024-11-02 12:48:57, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
}

long long S(int n) { // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++) {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}

long long W(int n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;

    if (n%2 == 0) {
        int sum = 0;
        for (int i = 0; i <= (n/2)-1; i++) {
            sum += W(i) * W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/ 2) +sum;
    }
    else {
        int sum = 0;
        for (int i = 0; i <= ((n+1)/2)-1; i++) {
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0172, 2024-11-02 12:51:24, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
}

long long S(int n) { // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++) {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}

long long W(int n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;

    if (n%2 == 0) {
        int sum = 0;
        for (int i = 1; i <= (n/2)-1; i++) {
            sum += W(i) * W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/ 2) +sum;
    }
    else {
        int sum = 0;
        for (int i = 1; i <= ((n+1)/2)-1; i++) {
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0173, 2024-11-02 12:38:49, PxxPPP---x (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k <= n && k > 1){
        long long ans = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long a = 3 * S(n-1);
        long long total = 0;
        for(int k = 1 ; k <= n-2 ; k++){
            total += S(k) * S(n-k-1);
        }
        return a + total;
    }
    

}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0174, 2024-11-02 12:44:37, PxxPPPPPPx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k <= n && k > 1){
        long long ans = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long a = 3 * S(n-1);
        long long total = 0;
        for(int k = 1 ; k <= n-2 ; k++){
            total += S(k) * S(n-k-1);
        }
        return a + total;
    }
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 0){
        long long A = (W(n/2) * ( W(n/2)+1 ) )/2;
        long long total = 0;
        for(int i = 1 ; i <= ((n/2) - 1) ; i++){
            total += W(i)*W(n-i);
        }
        return A + total;
    }else{
        long long total = 0;
        for(int i = 1 ; i<= ((n+1)/2 )-1;i++){
            total += W(i)*W(n-i);
        }
        return total;
    }
    
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0175, 2024-11-02 12:46:03, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k <= n && k > 1){
        long long ans = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
        return ans;
    }
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long a = 3 * S(n-1);
        long long total = 0;
        for(int k = 1 ; k <= n-2 ; k++){
            total += S(k) * S(n-k-1);
        }
        return a + total;
    }
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 0){
        long long A = (W(n/2) * ( W(n/2)+1 ) )/2;
        long long total = 0;
        for(int i = 1 ; i <= ((n/2) - 1) ; i++){
            total += W(i)*W(n-i);
        }
        return A + total;
    }else{
        long long total = 0;
        for(int i = 1 ; i<= ((n+1)/2 )-1;i++){
            total += W(i)*W(n-i);
        }
        return total;
    }
    
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0176, 2024-11-02 12:46:45, TTTPPPPPPT (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k <= n){
        long long ans = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
        return ans;
    }
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long a = 3 * S(n-1);
        long long total = 0;
        for(int k = 1 ; k <= n-2 ; k++){
            total += S(k) * S(n-k-1);
        }
        return a + total;
    }
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 0){
        long long A = (W(n/2) * ( W(n/2)+1 ) )/2;
        long long total = 0;
        for(int i = 1 ; i <= ((n/2) - 1) ; i++){
            total += W(i)*W(n-i);
        }
        return A + total;
    }else{
        long long total = 0;
        for(int i = 1 ; i<= ((n+1)/2 )-1;i++){
            total += W(i)*W(n-i);
        }
        return total;
    }
    
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0177, 2024-11-02 12:48:23, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    if(k <= n && k > 1){
        long long ans = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
        return ans;
    }
    

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long a = 3 * S(n-1);
        long long total = 0;
        for(int k = 1 ; k <= n-2 ; k++){
            total += S(k) * S(n-k-1);
        }
        return a + total;
    }
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 0){
        long long A = (W(n/2) * ( W(n/2)+1 ) )/2;
        long long total = 0;
        for(int i = 1 ; i <= ((n/2) - 1) ; i++){
            total += W(i)*W(n-i);
        }
        return A + total;
    }else{
        long long total = 0;
        for(int i = 1 ; i<= ((n+1)/2 )-1;i++){
            total += W(i)*W(n-i);
        }
        return total;
    }
    
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0178, 2024-11-02 09:18:24, P--xxxxxx- (10%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1 < k && k <= n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    } else if (k > n){
        return 0;
    } else if (k == 0){
        return 1;
    }
}
long long S(int n) {         // Schroder Number


}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0179, 2024-11-02 09:24:22, P--P------ (20%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1 < k && k <= n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    } else if (k > n){
        return 0;
    } else if (k == 0){
        return 1;
    }
}
long long S(int n) {         // Schroder Number
    if (n == 0){
        return 1;
    } else if (n == 1){
        return 2;
    } else if (n >= 2){
        long long result = 0;
        for (int k = 1; k < n-2;k++){
            result += S(k)*S(n-k-1);
        }
        return (3*S(n-1))+result;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0180, 2024-11-02 09:35:38, P--P--P--- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1 < k && k <= n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    } else if (k > n){
        return 0;
    } else if (k == 0){
        return 1;
    }
}
long long S(int n) {         // Schroder Number
    if (n == 0){
        return 1;
    } else if (n == 1){
        return 2;
    } else if (n >= 2){
        long long result = 0;
        for (long long k = 1; k < n-2;k++){
            result += S(k)*S(n-k-1);
        }
        return (3*S(n-1))+result;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0){
        return 0;
    } else if (n == 1){
        return 1;
    } else if (n%2 != 0){
        long long resultWodd = 0;
        long long end = ((n+1)/2)-1;
        for (long long i = 1; i < end; i++){
            resultWodd += (W(i)*W(n-i));
        }
        return resultWodd;
    } else if (n%2 == 0){
        long long leftresult = (W(n/2)*(W(n/2)+1))/2;
        long long rightresult = 0;
        for (long long i = 1; i < ((n/2)-1); i++){
            rightresult += W(i)*W(n-i);
        }
        return leftresult+rightresult;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0181, 2024-11-02 09:57:55, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1 < k && k <= n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    } else if (k > n){
        return 0;
    } else if (k == 0){
        return 1;
    }
}
long long S(int n) {         // Schroder Number
    if (n == 0){
        return 1;
    } else if (n == 1){
        return 2;
    } else if (n >= 2){
        long long result = 0;
        for (long long k = 1; k <= n-2;k++){
            result += S(k)*S(n-k-1);
        }
        return (3*S(n-1))+result;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0){
        return 0;
    } else if (n == 1){
        return 1;
    } else if (n%2 != 0){
        long long resultWodd = 0;
        long long end = ((n+1)/2)-1;
        for (long long i = 1; i <= end; i++){
            resultWodd += (W(i)*W(n-i));
        }
        return resultWodd;
    } else if (n%2 == 0){
        long long leftresult = (W(n/2)*(W(n/2)+1))/2;
        long long rightresult = 0;
        for (long long i = 1; i <= ((n/2)-1); i++){
            rightresult += W(i)*W(n-i);
        }
        return leftresult+rightresult;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0182, 2024-11-02 10:04:22, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0){
        return 1;
    } else if (k > n){
        return 0;
    } else if (1 < k <= n){
        long long result = (T(n,k-1))+(T(n-1,k-1))+(T(n-1,k));
        return result;
    }

    if (1 < k && k <= n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    } else if (k > n){
        return 0;
    } else if (k == 0){
        return 1;
    }
}
long long S(int n) {         // Schroder Number
    if (n == 0){
        return 1;
    } else if (n == 1){
        return 2;
    } else if (n >= 2){
        long long result = 0;
        for (long long k = 1; k <= n-2;k++){
            result += S(k)*S(n-k-1);
        }
        return (3*S(n-1))+result;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0){
        return 0;
    } else if (n == 1){
        return 1;
    } else if (n%2 != 0){
        long long resultWodd = 0;
        long long end = ((n+1)/2)-1;
        for (long long i = 1; i <= end; i++){
            resultWodd += (W(i)*W(n-i));
        }
        return resultWodd;
    } else if (n%2 == 0){
        long long leftresult = (W(n/2)*(W(n/2)+1))/2;
        long long rightresult = 0;
        for (long long i = 1; i <= ((n/2)-1); i++){
            rightresult += W(i)*W(n-i);
        }
        return leftresult+rightresult;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0183, 2024-11-02 09:22:51, P--PPPPxxx (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k>n) {
        return 0;
    }
    if (k>1) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    return 1;
    
}
long long S(int n) {         // Schroder Number
    if (n>=2) {
        long long total=0;
        for (int k=1 ; k<=n-2 ; k++) {
            total += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + total;
    }
    if (n==1) return 2;
    if (n==0) return 1;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2 == 0) {
        long long total=0;
        for (int i=1 ; i<=(n/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return ((W(n/2)*W((n/2)+1))/2) + total;
    }
    if (n%2 == 1) {
        long long total=0;
        for (int i=1 ; i<((n+1)/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return total;
    }

}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0184, 2024-11-02 09:34:26, P--PPPPxxx (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k && k<=n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if (k>n) {
        return 0;
    }
    if (k==0) return 1;
    
}
long long S(int n) {         // Schroder Number
    if (n>=2) {
        long long total=0;
        for (int k=1 ; k<=n-2 ; k++) {
            total += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + total;
    }
    if (n==1) return 2;
    if (n==0) return 1;
}

long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n>0 && n%2 == 0) {
        long long total=0;
        for (int i=1 ; i<=(n/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return ((W(n/2)*W((n/2)+1))/2) + total;
    }

    if (n>1 && n%2 == 1) {
        long long total=0;
        for (int i=1 ; i<=((n+1)/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return total;
    }

}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0185, 2024-11-02 11:54:39, P--PPPPxxx (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k && k<=n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if (k>n) {
        return 0;
    }
    if (k==0) return 1;
    
}
long long S(int n) {         // Schroder Number
    if (n>=2) {
        long long total=0;
        for (int k=1 ; k<=n-2 ; k++) {
            total += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + total;
    }
    if (n==1) return 2;
    if (n==0) return 1;
}

long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n>0 && n%2 == 0) {
        long long total=0;
        for (int i=1 ; i<=(n/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return ((W(n/2)*W((n/2)+1))/2) + total;
    }

    if (n>1 && n%2 == 1) {
        long long total=0;
        for (int i=1 ; i<=((n+1)/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return total;
    }

}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0186, 2024-11-02 11:55:34, P--PPPPPP- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (1<k && k<=n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if (k>n) {
        return 0;
    }
    if (k==0) return 1;
    
}
long long S(int n) {         // Schroder Number
    if (n>=2) {
        long long total=0;
        for (int k=1 ; k<=n-2 ; k++) {
            total += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + total;
    }
    if (n==1) return 2;
    if (n==0) return 1;
}

long long W(int n) {         // Wedderburn–Etherington Number
    
    if (n>0 && n%2 == 0) {
        long long total=0;
        for (int i=1 ; i<=(n/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + total;
    }

    if (n>1 && n%2 == 1) {
        long long total=0;
        for (int i=1 ; i<=((n+1)/2)-1 ; i++) {
            total += (W(i)*W(n-i));
        }
        return total;
    }
    if (n==0) return 0;
    if (n==1) return 1;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0187, 2024-11-02 12:04:58, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k>n) {
        return 0;
    }
    if (k==0) return 1;
    long long T1,T2,T3;
    T1 = T(n, k-1);
    T2 = T(n-1, k-1);
    T3 = T(n-1, k);
    return T1+T2+T3;
}

long long S(int n) {         // Schroder Number
    if (n>=2) {
        long long total=0;
        for (int k=1 ; k<=n-2 ; k++) {
            total += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + total;
    }
    if (n==1) return 2;
    if (n==0) return 1;
}

long long W(int n) {         // Wedderburn–Etherington Number
    
    if (n>0 && n%2 == 0) {
        long long total=0;
        for (int i=1 ; i<=(n/2)-1 ; i++) {
            total += W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + total;
    }

    if (n>1 && n%2 == 1) {
        long long total=0;
        for (int i=1 ; i<=((n+1)/2)-1 ; i++) {
            total += (W(i)*W(n-i));
        }
        return total;
    }
    if (n==0) return 0;
    if (n==1) return 1;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0188, 2024-11-02 11:32:19, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if(k>n) return 0;
    if(k==0) return 1;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        int sum{0};
        for(int k{1};k<=n-2;k++){
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        int sum{0};
        for(int i{1};i<=n/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2+sum;
    }else{
        int sum{0};
        for(int i{1};i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0189, 2024-11-02 11:38:21, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if(k>n) return 0;
    if(k==0) return 1;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum{0};
        for(long long k{1};k<=n-2;k++){
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum{0};
        for(long long i{1};i<=n/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2+sum;
    }else{
        long long sum{0};
        for(long long i{1};i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0190, 2024-11-02 11:41:32, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else if(k>n) return 0;
    else if(k==0) return 1;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum{0};
        for(long long k{1};k<=n-2;k++){
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum{0};
        for(long long i{1};i<=n/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2+sum;
    }else{
        long long sum{0};
        for(long long i{1};i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0191, 2024-11-02 11:44:08, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    if(k==0) return 1;
    if(k>n) return 0;
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum{0};
        for(long long k{1};k<=n-2;k++){
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum{0};
        for(long long i{1};i<=n/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2+sum;
    }else{
        long long sum{0};
        for(long long i{1};i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0192, 2024-11-02 11:45:17, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    if(k>1&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum{0};
        for(long long k{1};k<=n-2;k++){
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum{0};
        for(long long i{1};i<=n/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2+sum;
    }else{
        long long sum{0};
        for(long long i{1};i<=(n+1)/2-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0193, 2024-11-02 09:25:40, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {         
    // Schroder Number
    long long int x=0;
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else if (n>=2){
        for(int i=1;i<=n-2;i++){
            x+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+x;
    }

}
long long W(int n) {  
    long long int y=0;
    long long int z=0;       
    // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n>0){
        if(n%2==0){
            for(int j=0;j<=(n/2)-1;j++){
                z+=W(j)*W(n-j);
            }
            return (W(n/2)*(W(n/2)+1))/2+z;
        }
        else if(n%2!=0){
            for(int i=1;i<=((n+1)/2)-1;i++){
                y+=W(i)*W(n-i);
            }
            return y;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0194, 2024-11-02 09:26:33, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {         
    // Schroder Number
    long long int x=0;
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else if (n>=2){
        for(int i=1;i<=n-2;i++){
            x+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+x;
    }

}
long long W(int n) {  
    long long int y=0;
    long long int z=0;       
    // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n>1){
        if(n%2==0){
            for(int j=0;j<=(n/2)-1;j++){
                z+=W(j)*W(n-j);
            }
            return (W(n/2)*(W(n/2)+1))/2+z;
        }
        else if(n%2!=0){
            for(int i=1;i<=((n+1)/2)-1;i++){
                y+=W(i)*W(n-i);
            }
            return y;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0195, 2024-11-02 09:31:59, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {         
    // Schroder Number
    long long int x=0;
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else if (n>=2){
        for(int i=1;i<=n-2;i++){
            x+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+x;
    }

}
long long W(int n) {  
    long long int y=0;
    long long int z=0;
    long long int a=n/2;      
    // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n>1){
        if(n%2==0){
            for(int j=1;j<=(a-1);j++){
                z+=W(j)*W(n-j);
            }
            return (W(a)*(W(a)+1))/2+z;
        }
        else if(n%2!=0){
            for(int i=1;i<=((n-1)/2)-1;i++){
                y+=W(i)*W(n-i);
            }
            return y;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0196, 2024-11-02 09:33:35, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {         
    // Schroder Number
    long long int x=0;
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else if (n>=2){
        for(int i=1;i<=n-2;i++){
            x+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+x;
    }

}
long long W(int n) {  
    long long int y=0;
    long long int z=0;
    long long int a=n/2;      
    // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n>1){
        if(n%2==0){
            for(int j=1;j<=(a-1);j++){
                z+=W(j)*W(n-j);
            }
            return (W(a)*(W(a)+1))/2+z;
        }
        else if(n%2!=0){
            for(int i=1;i<=((n-1)/2);i++){
                y+=W(i)*W(n-i);
            }
            return y;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0197, 2024-11-02 09:23:34, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    // Schroder Triangle
    if(k==0)return 1;
    else if(k>n)return 0;
    else return(T(n,k-1)+(T(n-1,k-1)+(T(n-1,k))));

}
long long S(int n) {
    // Schroder Number
    if(n==0)return 1;
    else if(n==1)return 2;
    else{
        int k=1;
        long long count=0;
        for(k;k<=n-2;k++){
            count+=S(k)*S(n-k-1);
        }
        return(3*(S(n-1))+count);
    } 
    

}
long long W(int n) {
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    else if(n==1)return 1;
    else if(n%2==0){
        int i=1;
        long long count=0;
        for(i;i<=n/2+1;i++){
            count+=W(i)*W(n-i);
        }
        return((W(n/2)*(W(n/2)+1))/2+count);
    }else{
        int i=1;
        long long count=0;
        for(i;i<=(n+1)/2-1;i++){
            count+=W(i)*W(n-i);
        }
    }



}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0198, 2024-11-02 09:29:02, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    // Schroder Triangle
    if(k==0)return 1;
    else if(k>n)return 0;
    else return(T(n,k-1)+(T(n-1,k-1)+(T(n-1,k))));

}
long long S(int n) {
    // Schroder Number
    if(n==0)return 1;
    else if(n==1)return 2;
    else{
        long long count=0;
        for(int k=1;k<=n-2;k++){
            count+=S(k)*S(n-k-1);
        }
        return(3*(S(n-1))+count);
    } 
    

}
long long W(int n) {
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    else if(n==1)return 1;
    if(n%2==0){
        long long count=0;
        for(int i=1;i<=n/2+1;i++){
            count+=W(i)*W(n-i);
        }
        return(((W(n/2)*((W(n/2)+1)))/2)+count);
    }else{
        long long count=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            count+=W(i)*W(n-i);
        }
        return count;
    }



}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0199, 2024-11-02 11:52:45, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    // Schroder Triangle
    if(k==0)return 1;
    else if(k>n)return 0;
    else return(T(n,k-1)+(T(n-1,k-1)+(T(n-1,k))));

}
long long S(int n) {
    // Schroder Number
    if(n==0)return 1;
    else if(n==1)return 2;
    else{
        long long count=0;
        for(int k=1;k<=n-2;k++){
            count+=S(k)*S(n-k-1);
        }
        return(3*(S(n-1))+count);
    } 
    

}
long long W(int n) {
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long count=W(n/2)*(W(n/2)+1)/2;
        for(int i=1;i<=(n/2)+1;i++){
            count+=(W(i)*W(n-i));
        }
        return count;
    }else{
        long long count=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            count+=(W(i)*W(n-i));
        }
        return count;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0200, 2024-11-02 11:53:49, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    // Schroder Triangle
    if(k==0)return 1;
    else if(k>n)return 0;
    else return(T(n,k-1)+(T(n-1,k-1)+(T(n-1,k))));

}
long long S(int n) {
    // Schroder Number
    if(n==0)return 1;
    else if(n==1)return 2;
    else{
        long long count=0;
        for(int k=1;k<=n-2;k++){
            count+=S(k)*S(n-k-1);
        }
        return(3*(S(n-1))+count);
    } 
    

}
long long W(int n) {
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long count=W(n/2)*(W(n/2)+1)/2;
        for(int i=1;i<=(n/2)-1;i++){
            count+=(W(i)*W(n-i));
        }
        return count;
    }else{
        long long count=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            count+=(W(i)*W(n-i));
        }
        return count;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0201, 2024-11-02 09:21:17, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) 
{         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++)
    {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;

}
long long W(int n) 
{         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    int sum = 0;
    if (n%2 == 0)
    {
        
        for (int i = 1; i < (n/2)-1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1))/2) + sum;
    }
    for (int i = 1; i < ((n-1)/2)-1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum;

}

int main() 
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0202, 2024-11-02 10:08:47, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) 
{         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++)
    {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;

}
long long W(int n) 
{         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    int sum = 0;
    if (n%2 == 0)
    {
        for (int i = 1; i < (n/2)-1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1))/2) + sum;
    }

    for (int i = 1; i < ((n+1)/2)-1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum;

}

int main() 
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0203, 2024-11-02 10:09:19, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) 
{         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++)
    {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;

}
long long W(int n) 
{         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    int sum = 0;
    if (n%2 == 0)
    {
        for (int i = 1; i < (n/2)-1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1))/2) + sum;
    }
    else
    {
        for (int i = 1; i < ((n+1)/2)-1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}

int main() 
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0204, 2024-11-02 10:10:29, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) 
{         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; k++)
    {
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;

}
long long W(int n) 
{         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    int sum = 0;
    if (n%2 == 0)
    {
        for (int i = 1; i <= (n/2)-1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1))/2) + sum;
    }
    else
    {
        for (int i = 1; i <= ((n+1)/2)-1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}

int main() 
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0205, 2024-11-02 12:51:19, P--PPPPxxx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n >= k && k > 1) return T(n-1,k)+T(n-1,k-1)+T(n,k-1);
    else if( k > n ) return 0;
    else if(k == 0) return 1;
}
long long S(int n) { // Schroder Number
    if(n>=2){
        long long sum = 0 ;
        for(int i = 1 ; i <= n-2 ; i++){
            sum += S(i)*S(n-i-1);
        }
        return 3*S(n-1)+sum;
    }
    else if(n==0) return 1;
    else if(n==1) return 2;

}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2 == 0){
        long long sum = 0;
        for(int i = 1 ; i < n/2 ; i++) sum+= W(i)+W(n-i);
        return sum + W(n/2)*W(n/2+1)/2;
    }
    else{
        long long sum = 0;
        for(int i = 1 ; i < (n+1)/2 ; i++) sum+= W(i)+W(n-i);
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0206, 2024-11-02 14:02:07, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    else if(k == 0) return 1;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    long long sum = 0 ;
    for(int i = 1 ; i <= n-2 ; i++){
        sum += S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2 == 0){
        long long sum = 0;
        for(int i = 1 ; i < n/2 ; i++) sum+= W(i)+W(n-i);
        return sum + W(n/2)*W(n/2+1)/2;
    }
    else{
        long long sum = 0;
        for(int i = 1 ; i < (n+1)/2 ; i++) sum+= W(i)+W(n-i);
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0207, 2024-11-02 14:21:57, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    else if(k == 0) return 1;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    long long sum = 0 ;
    for(int i = 1 ; i <= n-2 ; i++){
        sum += S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    else if(n==1) return 1;
    else{
        if(n%2 == 0){
        long long sum = 0;
        for(int i = 1 ; i < (n/2) ; i++){
            sum+= W(i)+W(n-i);
        }
        //cout << sum + W(n/2)*(W(n/2)+1)/2;
        return sum + W(n/2)*(W(n/2)+1)/2;
    }
        else{
        long long sum = 0;
        for(int i = 1 ; i < (n+1)/2 ; i++) sum+= W(i)*W(n-i);
        return sum;
        }
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0208, 2024-11-02 14:23:36, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n) return 0;
    else if(k == 0) return 1;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    long long sum = 0 ;
    for(int i = 1 ; i <= n-2 ; i++){
        sum += S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    else if(n==1) return 1;
    else{
        if(n%2 == 0){
        long long sum = 0;
        for(int i = 1 ; i < (n/2) ; i++){
            sum+= W(i)*W(n-i);
        }
        //cout << sum + W(n/2)*(W(n/2)+1)/2;
        return sum + W(n/2)*(W(n/2)+1)/2;
    }
        else{
        long long sum = 0;
        for(int i = 1 ; i < (n+1)/2 ; i++) sum+= W(i)*W(n-i);
        return sum;
        }
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0209, 2024-11-02 12:55:07, x-xPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(n == k){
        return 1;
    }
    if(k > n){
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    long long ans = 0;
    for(int k = 1;k <= n-2 ;k++){
        ans += S(k)*S(n-k-1);
    }
    return 3*S(n-1)+ans;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        long long ans = 0;
        for(int i = 1;i <= (n/2) -1;i++){
            ans += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + ans;
    }
    else{
        long long ans = 0;
        for(int i = 1;i <= ((n+1)/2)-1 ;i++){
            ans += W(i)*W(n-1);
        }
        return ans;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0210, 2024-11-02 12:57:11, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    long long ans = 0;
    for(int k = 1;k <= n-2 ;k++){
        ans += S(k)*S(n-k-1);
    }
    return 3*S(n-1)+ans;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        long long ans = 0;
        for(int i = 1;i <= (n/2) -1;i++){
            ans += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + ans;
    }
    else{
        long long ans = 0;
        for(int i = 1;i <= ((n+1)/2)-1 ;i++){
            ans += W(i)*W(n-1);
        }
        return ans;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0211, 2024-11-02 14:42:31, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    long long ans = 0;
    for(int k = 1;k <= n-2 ;k++){
        ans += S(k)*S(n-k-1);
    }
    return 3*S(n-1)+ans;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0 && n >= 2){
        long long ans1 = 0;
        for(int i = 1;i <= (n/2) -1;i++){
            ans1 += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + ans1;
    }
    if(n % 2 != 0 && n >= 3){
        long long ans = 0;
        for(int i = 1;i <= ((n+1)/2)-1 ;i++){
            ans += W(i)*W(n-1);
        }
        return ans;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0212, 2024-11-02 14:45:16, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n){
        return 0;
    }
    if(k == 0){
        return 1;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    long long ans = 0;
    for(int k = 1;k <= n-2 ;k++){
        ans += S(k)*S(n-k-1);
    }
    return 3*S(n-1)+ans;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0 && n >= 2){
        long long ans1 = 0;
        for(int i = 1;i <= (n*0.5) -1;i++){
            ans1 += W(i)*W(n-i);
        }
        return (W(n*0.5)*(W(n*0.5)+1))*0.5 + ans1;
    }
    if(n % 2 != 0 && n >= 3){
        long long ans = 0;
        for(int i = 1;i <= ((n+1)*0.5)-1 ;i++){
            ans += W(i)*W(n-i);
        }
        return ans;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0213, 2024-11-02 09:25:14, PPP-PPPPPP (90%)

#include <iostream>
using namespace std;
long long T(long long n, long long k) { // Schroder Triangle
    if (k == 0) return 1;
    else if (k > n) return 0;
    else if (k > 1 && k <= n) return T(n,k-1)  + T(n-1,k-1) + T(n-1,k);
}
long long S(long long n) { // Schroder Number
    if (n == 0 || n == 1) return 2;
    else {
        long long init = 3*S(n-1);
        long long sum = 0;
        for (long long k = 1; k <= n-2; k++) {
            sum += S(k) * S(n-k-1);
        }
        return init + sum;
    }
}
long long W(long long n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    else if (n == 1) return 1;
    else if ( n % 2 == 0) {
        long long init = (W(n/2) * (W(n/2) + 1)) / 2;
        long long sum =0;
        for (long long i = 1; i <= ((n/2) - 1);  i++) {
            sum += W(i)*W(n-i);
        }
        return init + sum;
    }
    else if (n % 2 != 0) {
        long long sum = 0;
        for (long long i = 1; i <= ((n+1)/2) - 1; i++) {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0214, 2024-11-02 09:27:45, PPP-PPPPPP (90%)

#include <iostream>
using namespace std;
long long T(long long n, long long k) { // Schroder Triangle
    if (k == 0) return 1;
    else if (k > n) return 0;
    else return T(n,k-1)  + T(n-1,k-1) + T(n-1,k);
}
long long S(long long n) { // Schroder Number
    if (n == 0 || n == 1) return 2;
    else {
        long long init = 3*S(n-1);
        long long sum = 0;
        for (long long k = 1; k <= n-2; k++) {
            sum += S(k) * S(n-k-1);
        }
        return init + sum;
    }
}
long long W(long long n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    else if (n == 1) return 1;
    else if ( n % 2 == 0) {
        long long init = (W(n/2) * (W(n/2) + 1)) / 2;
        long long sum = 0;
        for (long long i = 1; i <= ((n/2) - 1);  i++) {
            sum += W(i)*W(n-i);
        }
        return init + sum;
    }
    else {
        long long sum = 0;
        for (long long i = 1; i <= ((n+1)/2) - 1; i++) {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0215, 2024-11-02 12:03:55, PPP-PPPPPP (90%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    else if (k > n) return 0;
    else return T(n,k-1)  + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if (n == 0 || n == 1) return 2;
    else {
        long long init = 3*S(n-1);
        long long sum = 0;
        for (long long k = 1; k <= n-2; k++) {
            sum += S(k) * S(n-k-1);
        }
        return init + sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    else if (n == 1) return 1;
    else if ( n % 2 == 0) {
        long long init = (W(n/2) * (W(n/2) + 1)) / 2;
        long long sum = 0;
        for (long long i = 1; i <= ((n/2) - 1);  i++) {
            sum += W(i)*W(n-i);
        }
        return init + sum;
    }
    else {
        long long sum = 0;
        for (long long i = 1; i <= ((n+1)/2) - 1; i++) {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0216, 2024-11-02 12:05:38, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    else if (k > n) return 0;
    else return T(n,k-1)  + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    else {
        long long init = 3*S(n-1);
        long long sum = 0;
        for (long long k = 1; k <= n-2; k++) {
            sum += S(k) * S(n-k-1);
        }
        return init + sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    else if (n == 1) return 1;
    else if ( n % 2 == 0) {
        long long init = (W(n/2) * (W(n/2) + 1)) / 2;
        long long sum = 0;
        for (long long i = 1; i <= ((n/2) - 1);  i++) {
            sum += W(i)*W(n-i);
        }
        return init + sum;
    }
    else {
        long long sum = 0;
        for (long long i = 1; i <= ((n+1)/2) - 1; i++) {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0217, 2024-11-02 12:45:45, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1&&k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n){
        return 0;
    }
    else if(k==0){
        return 1;
    }

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum=0;
        for(int i=1;i<=n-2;i++){
            sum+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum2=0;
        for(int i=1;i<=((n/2)-1);i++){
            sum2+=(W(i)*W(n-i));
        }
        return ((W(n/2))*(W(n/2)+1)/2)+sum2;
    }
    if(n%2==1){
        long long sum3=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum3+=(W(i)*W(n-i));
        }
        return sum3;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0218, 2024-11-02 12:47:14, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    if(k>1&&k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n){
        return 0;
    }

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum=0;
        for(int i=1;i<=n-2;i++){
            sum+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum2=0;
        for(int i=1;i<=((n/2)-1);i++){
            sum2+=(W(i)*W(n-i));
        }
        return ((W(n/2))*(W(n/2)+1)/2)+sum2;
    }
    if(n%2==1){
        long long sum3=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum3+=(W(i)*W(n-i));
        }
        return sum3;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0219, 2024-11-02 12:48:47, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    if(k>1&&k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    if(k>n){
        return 0;
    }

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum=0;
        for(int i=1;i<=n-2;i++){
            sum+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum2=0;
        for(int i=1;i<=((n/2)-1);i++){
            sum2+=(W(i)*W(n-i));
        }
        return ((W(n/2))*(W(n/2)+1)/2)+sum2;
    }
    if(n%2==1){
        long long sum3=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum3+=(W(i)*W(n-i));
        }
        return sum3;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0220, 2024-11-02 12:50:01, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){
        return 1;
    }
    if(k>n){
        return 0;
    }
    if(k>1&&k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum=0;
        for(int i=1;i<=n-2;i++){
            sum+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum2=0;
        for(int i=1;i<=((n/2)-1);i++){
            sum2+=(W(i)*W(n-i));
        }
        return ((W(n/2))*(W(n/2)+1)/2)+sum2;
    }
    if(n%2==1){
        long long sum3=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum3+=(W(i)*W(n-i));
        }
        return sum3;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0221, 2024-11-02 09:20:40, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
    {
        return 1;
    }
    if (k > n)
    {
        return 0;
    }
    else if (n >= k)
    {
        long long id1 = T(n, k - 1);
        long long id2 = T(n - 1, k - 1);
        long long id3 = T(n - 1, k);
        return (id1 + id2 + id3);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
    {
        return 1;
    }
    else if (n == 1)
    {
        return 2;
    }

    long long sum = 0;
    for (int k = 1; k <= n - 2; k++)
    {
        sum += (S(k) * S(n - k - 1));
    }
    return 3 * S(n - 1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
    {
        return 0;
    }
    else if (n == 1)
    {
        return 1;
    }

    if (n % 2 == 0)
    {
        long long id1 = W(n / 2);
        long long id2 = W(n / 2) + 1;
        return (id1 + id2) / 2;
    }
    else
    {
        int s;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
        {
            s += (W(i) * W(n - i));
        }
        return s;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0222, 2024-11-02 09:21:26, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
    {
        return 1;
    }
    if (k > n)
    {
        return 0;
    }
    else if (n >= k)
    {
        long long id1 = T(n, k - 1);
        long long id2 = T(n - 1, k - 1);
        long long id3 = T(n - 1, k);
        return (id1 + id2 + id3);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
    {
        return 1;
    }
    else if (n == 1)
    {
        return 2;
    }

    long long sum = 0;
    for (int k = 1; k <= n - 2; k++)
    {
        sum += (S(k) * S(n - k - 1));
    }
    return 3 * S(n - 1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
    {
        return 0;
    }
    else if (n == 1)
    {
        return 1;
    }

    if (n % 2 == 0)
    {
        long long id1 = W(n / 2);
        long long id2 = W(n / 2) + 1;
        return (id1 + id2) / 2;
    }
    else if (n % 2 != 0)
    {
        long long s;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
        {
            s += (W(i) * W(n - i));
        }
        return s;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0223, 2024-11-02 09:21:38, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
    {
        return 1;
    }
    if (k > n)
    {
        return 0;
    }
    else if (n >= k)
    {
        long long id1 = T(n, k - 1);
        long long id2 = T(n - 1, k - 1);
        long long id3 = T(n - 1, k);
        return (id1 + id2 + id3);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
    {
        return 1;
    }
    else if (n == 1)
    {
        return 2;
    }

    long long sum = 0;
    for (int k = 1; k <= n - 2; k++)
    {
        sum += (S(k) * S(n - k - 1));
    }
    return 3 * S(n - 1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
    {
        return 0;
    }
    else if (n == 1)
    {
        return 1;
    }

    if (n % 2 == 0)
    {
        long long id1 = W(n / 2);
        long long id2 = W(n / 2) + 1;
        return (id1 + id2) / 2;
    }
    else if (n % 2 != 0)
    {
        long long s;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
        {
            s += (W(i) * W(n - i));
        }
        return s;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0224, 2024-11-02 11:38:49, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
    {
        return 1;
    }
    if (k > n)
    {
        return 0;
    }
    else if (n >= k)
    {
        long long id1 = T(n, k - 1);
        long long id2 = T(n - 1, k - 1);
        long long id3 = T(n - 1, k);
        return (id1 + id2 + id3);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
    {
        return 1;
    }
    else if (n == 1)
    {
        return 2;
    }

    long long sum = 0;
    for (int k = 1; k <= n - 2; k++)
    {
        sum += (S(k) * S(n - k - 1));
    }
    return 3 * S(n - 1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
    {
        return 0;
    }
    else if (n == 1)
    {
        return 1;
    }

    if (n % 2 == 0)
    {
        long long id1 = W(n / 2);
        long long id2 = (W(n / 2)) + 1;
        long long id3 = (id1 * id2) / 2;

        long long m = 0;
        for (int i = 1; i <= (n / 2 - 1); i++)
        {
            m += (W(i) * W(n - i));
        }
        return id3 + m;
    }
    else
    {
        long long s = 0;
        for (int i = 1; i <= (((n + 1) / 2) - 1); i++)
        {
            long long id1 = W(i);
            long long id2 = W(n - i);
            s += (id1 * id2);
        }
        return s;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0225, 2024-11-02 14:37:22, PPPP--Pxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ 
    long long right = 0;
    if(k > n)
    right = 0;
    if(k == 0)
    right = 1;
    if(k >= 1 && k <= n)
    {
    right = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    return right;
}
long long S(int n) 
{       
    long long right = 0;  
    if(n == 0)
    right = 1;
    if(n == 1)
    right = 2;
    if(n > 2)
    {
        long long temp = 0;
        for(int i = 1; i <= n-2; ++i)
        {
            temp += S(i)*S(n-i-1);
        }
        right = 3 * S(n-1) + temp;
    }
    return right;

}
long long W(int n) 
{         
    long long right = 0;
    if(n == 0)
    right = 0;
    if(n == 1)
    right = 1;
    if(n % 2 == 0 && n > 0)
    {
        long long temp = 0;
        for(int i = 0; i <= (n/2)-1; ++i)
        {
            temp += (W(i) * W(n-i));
        }
        n = n/2;
        right = (W(n)* (W(n)+1))/2 + temp;
    }
    else if(n % 2 != 0)
    {
        //long long temp = 0;
        for(int i = 1; i < (n+1)/2-1; ++i)
        right += W(i)*W(n-i);
    }


    return right;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0226, 2024-11-02 14:41:04, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ 
    long long right = 0;
    if(k > n)
    right = 0;
    if(k == 0)
    right = 1;
    if(k >= 1 && k <= n)
    {
    right = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    return right;
}
long long S(int n) 
{       
    long long right = 0;  
    if(n == 0)
    right = 1;
    if(n == 1)
    right = 2;
    if(n > 2)
    {
        long long temp = 0;
        for(int i = 1; i <= n-2; ++i)
        {
            temp += S(i)*S(n-i-1);
        }
        right = 3 * S(n-1) + temp;
    }
    return right;

}
long long W(int n) 
{         
    long long right = 0;
    if(n == 0)
    right = 0;
    if(n == 1)
    right = 1;
    if(n % 2 == 0 && n > 0)
    {
        long long temp = 0;
        for(int i = 1; i <= (n/2)-1; ++i)
        {
            temp += (W(i) * W(n-i));
        }
        n = n/2;
        right = (W(n)* (W(n)+1))/2 + temp;
    }
    else if(n % 2 != 0)
    {
        //long long temp = 0;
        for(int i = 1; i < (n+1)/2-1; ++i)
        right += W(i)*W(n-i);
    }


    return right;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0227, 2024-11-02 14:45:17, PPPP--PPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ 
    long long right = 0;
    if(k > n)
    right = 0;
    if(k == 0)
    right = 1;
    if(k >= 1 && k <= n)
    {
    right = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    return right;
}
long long S(int n) 
{       
    long long right = 0;  
    if(n == 0)
    right = 1;
    if(n == 1)
    right = 2;
    if(n > 2)
    {
        long long temp = 0;
        for(int i = 1; i <= n-2; ++i)
        {
            temp += S(i)*S(n-i-1);
        }
        right = 3 * S(n-1) + temp;
    }
    return right;

}
long long W(int n) 
{         
    long long right = 0;
    if(n == 0)
    right = 0;
    if(n == 1)
    right = 1;
    if(n % 2 == 0 && n > 0)
    {
        long long temp = 0;
        for(int i = 1; i <= (n/2)-1; ++i)
        {
            temp += (W(i) * W(n-i));
        }
        n = n/2;
        right = (W(n)* (W(n)+1))/2 + temp;
    }
    else if(n % 2 != 0)
    {
        //long long temp = 0;
        for(int i = 1; i <= (n+1)/2-1; ++i)
        right += W(i)*W(n-i);
    }


    return right;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0228, 2024-11-02 14:46:20, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ 
    long long right = 0;
    if(k > n)
    right = 0;
    if(k == 0)
    right = 1;
    if(k >= 1 && k <= n)
    {
    right = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    return right;
}
long long S(int n) 
{       
    long long right = 0;  
    if(n == 0)
    right = 1;
    if(n == 1)
    right = 2;
    if(n >= 2)
    {
        long long temp = 0;
        for(int k = 1; k <= n-2; ++k)
        {
            temp += S(k)*S(n-k-1);
        }
        right = 3 * S(n-1) + temp;
    }
    return right;

}
long long W(int n) 
{         
    long long right = 0;
    if(n == 0)
    right = 0;
    if(n == 1)
    right = 1;
    if(n % 2 == 0 && n > 0)
    {
        long long temp = 0;
        for(int i = 1; i <= (n/2)-1; ++i)
        {
            temp += (W(i) * W(n-i));
        }
        n = n/2;
        right = (W(n)* (W(n)+1))/2 + temp;
    }
    else if(n % 2 != 0)
    {
        //long long temp = 0;
        for(int i = 1; i <= (n+1)/2-1; ++i)
        right += W(i)*W(n-i);
    }


    return right;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0229, 2024-11-02 12:37:27, PPPxxxxxx- (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) { // Schroder Number

}
long long W(int n) { // Wedderburn–Etherington Number

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
    }
    return 0;
}
# 0230, 2024-11-02 12:41:23, PPPPPP---- (60%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long a1,a2=0;
    a1 = 3*S(n-1);
    for (int k=1;k<n-1;k++) {
        a2+=S(k)*S(n-k-1);
    }
    return a1+a2;

}
long long W(int n) { // Wedderburn–Etherington Number

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
    }
    return 0;
}
# 0231, 2024-11-02 12:48:04, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long a1,a2=0;
    a1 = 3*S(n-1);
    for (int k=1;k<n-1;k++) {
        a2+=S(k)*S(n-k-1);
    }
    return a1+a2;

}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2==0) {
        long long w1, w2=0;
        w1 = (W(n/2)*(W(n/2)+1))/2;
        for (int i=1; i<=((n/2)-1);i++) {
            w2 += W(i)*W(n-i);
        }
        return w1+w2;
    }
    else {
        long long w1=0;
        for (int i=0;i<=((n+1)/2)-1;i++) {
            w1 += W(i)*W(n-i);
        }
        return w1;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
    }
    return 0;
}
# 0232, 2024-11-02 12:48:43, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long a1,a2=0;
    a1 = 3*S(n-1);
    for (int k=1;k<n-1;k++) {
        a2+=S(k)*S(n-k-1);
    }
    return a1+a2;

}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2==0) {
        long long w1, w2=0;
        w1 = (W(n/2)*(W(n/2)+1))/2;
        for (int i=1; i<=((n/2)-1);i++) {
            w2 += W(i)*W(n-i);
        }
        return w1+w2;
    }
    else {
        long long w1=0;
        for (int i=1;i<=((n+1)/2)-1;i++) {
            w1 += W(i)*W(n-i);
        }
        return w1;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
    }
    return 0;
}

# 0233, 2024-11-02 10:51:59, Compilation error (0%)

#include <stdio.h>
#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#include <set>
#include <cctype>
#include <cmath>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
    {
        /* code */
        return 1;
    }

    if (k > n)
    {
        /* code */
        return 0;
    }
    if (1 < k & k <= n)
    {
        /* code */
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 1)
    {
        /* code */
        return 2;
    }

    if (n == 0)
    {
        /* code */
        return 1;
    }
    if (n >= 2)
    {

        long long s1, s2;
        long long k = 0;
        k = n - 2;
        s1 = 3 * (S(n - 1));

        long long s2 = 0;
        if (k >= 0)
        {
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                long long sum1 = S(i);
                long long sum2 = S(n - i - 1);
                s2 += sum1 * sum2;
            }
        }
        else
        {
            for (int i = 1; i >= k; i--)
            {
                /* code */
                long long sum1 = S(i);
                long long sum2 = S(n - i - 1);
                s2 += sum1 * sum2;
            }
        }

        return s1 + s2;
        // /* code */
        // long long sum = 0;
        // for (int i = n - 2; i < 1; i++)
        // {
        //     /* code */
        //     long long s1 = S(n);
        //     long long s2 = S(n - i - 1);
        //     sum += s1 * s2;
        // }
        // long long result = 3 * S(n - 1) + sum;
        // return result;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
    {
        /* code */
        return 0;
    }
    if (n == 1)
    {
        return 1;
    }

    if (n % 2 == 0)
    {
        /* code */
        long long s1, s2, k;
        s1 = (W(n / 2) * (W(n / 2) + 1)) / 2;
        k = (n / 2) - 1;
        s2 = 0;
        if (k >= 0)
        {
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                int sum1 = W(i);
                int sum2 = W(n - i);
                s2 += sum1 * sum2;
            }
        }
        else
        {
            /* code */
            for (int i = 1; i >= k; i--)
            {
                /* code */
                int sum1 = W(i);
                int sum2 = W(n - i);
                s2 += sum1 * sum2;
            }
        }
        return s1 + s2;
    }

    if (n % 2 != 0)
    {
        /* code */
        long long k;
        k = ((n + 1) / 2) - 1;
        if (k >= 0)
        {
            long long s1 = 0;
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                long long sum1, sum2;
                sum1 = W(i);
                sum2 = W(n - i);
                s1 += sum1 * sum2;
            }
            return s1;
        }
        else
        {
            long long s1 = 0;
            /* code */
            for (int i = 1; i >= k; i--)
            {
                /* code */
                long long sum1, sum2;
                sum1 = W(i);
                sum2 = W(n - i);
                s1 += sum1 * sum2;
            }
            return s1;
        }
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0234, 2024-11-02 10:52:26, Compilation error (0%)

#include <stdio.h>
#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#include <set>
#include <cctype>
#include <cmath>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
    {
        /* code */
        return 1;
    }

    if (k > n)
    {
        /* code */
        return 0;
    }
    if (1 < k & k <= n)
    {
        /* code */
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 1)
    {
        /* code */
        return 2;
    }

    if (n == 0)
    {
        /* code */
        return 1;
    }
    // if (n >= 2)
    // {

    //     long long s1, s2;
    //     long long k = 0;
    //     k = n - 2;
    //     s1 = 3 * (S(n - 1));

    //     long long s2 = 0;
    //     if (k >= 0)
    //     {
    //         /* code */
    //         for (int i = 1; i <= k; i++)
    //         {
    //             /* code */
    //             long long sum1 = S(i);
    //             long long sum2 = S(n - i - 1);
    //             s2 += sum1 * sum2;
    //         }
    //     }
    //     else
    //     {
    //         for (int i = 1; i >= k; i--)
    //         {
    //             /* code */
    //             long long sum1 = S(i);
    //             long long sum2 = S(n - i - 1);
    //             s2 += sum1 * sum2;
    //         }
    //     }

    //     return s1 + s2;
        // /* code */
        // long long sum = 0;
        // for (int i = n - 2; i < 1; i++)
        // {
        //     /* code */
        //     long long s1 = S(n);
        //     long long s2 = S(n - i - 1);
        //     sum += s1 * s2;
        // }
        // long long result = 3 * S(n - 1) + sum;
        // return result;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
    {
        /* code */
        return 0;
    }
    if (n == 1)
    {
        return 1;
    }

    if (n % 2 == 0)
    {
        /* code */
        long long s1, s2, k;
        s1 = (W(n / 2) * (W(n / 2) + 1)) / 2;
        k = (n / 2) - 1;
        s2 = 0;
        if (k >= 0)
        {
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                int sum1 = W(i);
                int sum2 = W(n - i);
                s2 += sum1 * sum2;
            }
        }
        else
        {
            /* code */
            for (int i = 1; i >= k; i--)
            {
                /* code */
                int sum1 = W(i);
                int sum2 = W(n - i);
                s2 += sum1 * sum2;
            }
        }
        return s1 + s2;
    }

    if (n % 2 != 0)
    {
        /* code */
        long long k;
        k = ((n + 1) / 2) - 1;
        if (k >= 0)
        {
            long long s1 = 0;
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                long long sum1, sum2;
                sum1 = W(i);
                sum2 = W(n - i);
                s1 += sum1 * sum2;
            }
            return s1;
        }
        else
        {
            long long s1 = 0;
            /* code */
            for (int i = 1; i >= k; i--)
            {
                /* code */
                long long sum1, sum2;
                sum1 = W(i);
                sum2 = W(n - i);
                s1 += sum1 * sum2;
            }
            return s1;
        }
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0235, 2024-11-02 10:54:57, PPPPPPPPPP (100%)

#include <stdio.h>
#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#include <set>
#include <cctype>
#include <cmath>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0 & n >= 0)
    {
        /* code */
        return 1;
    }

    if (k > n)
    {
        /* code */
        return 0;
    }
    if (1 < k & k <= n)
    {
        /* code */
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 1)
    {
        /* code */
        return 2;
    }

    if (n == 0)
    {
        /* code */
        return 1;
    }
    if (n >= 2)
    {

        long long s1, s2;
        long long k = 0;
        k = n - 2;
        s1 = 3 * (S(n - 1));

        s2 = 0;
        if (k >= 0)
        {
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                long long sum1 = S(i);
                long long sum2 = S(n - i - 1);
                s2 += sum1 * sum2;
            }
        }
        else
        {
            for (int i = 1; i >= k; i--)
            {
                /* code */
                long long sum1 = S(i);
                long long sum2 = S(n - i - 1);
                s2 += sum1 * sum2;
            }
        }

        return s1 + s2;
        // /* code */
        // long long sum = 0;
        // for (int i = n - 2; i < 1; i++)
        // {
        //     /* code */
        //     long long s1 = S(n);
        //     long long s2 = S(n - i - 1);
        //     sum += s1 * s2;
        // }
        // long long result = 3 * S(n - 1) + sum;
        // return result;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
    {
        /* code */
        return 0;
    }
    if (n == 1)
    {
        return 1;
    }

    if (n % 2 == 0)
    {
        /* code */
        long long s1, s2, k;
        s1 = (W(n / 2) * (W(n / 2) + 1)) / 2;
        k = (n / 2) - 1;
        s2 = 0;
        if (k >= 0)
        {
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                int sum1 = W(i);
                int sum2 = W(n - i);
                s2 += sum1 * sum2;
            }
        }
        else
        {
            /* code */
            for (int i = 1; i >= k; i--)
            {
                /* code */
                int sum1 = W(i);
                int sum2 = W(n - i);
                s2 += sum1 * sum2;
            }
        }
        return s1 + s2;
    }

    if (n % 2 != 0)
    {
        /* code */
        long long k;
        k = ((n + 1) / 2) - 1;
        if (k >= 0)
        {
            long long s1 = 0;
            /* code */
            for (int i = 1; i <= k; i++)
            {
                /* code */
                long long sum1, sum2;
                sum1 = W(i);
                sum2 = W(n - i);
                s1 += sum1 * sum2;
            }
            return s1;
        }
        else
        {
            long long s1 = 0;
            /* code */
            for (int i = 1; i >= k; i--)
            {
                /* code */
                long long sum1, sum2;
                sum1 = W(i);
                sum2 = W(n - i);
                s1 += sum1 * sum2;
            }
            return s1;
        }
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0236, 2024-11-02 09:16:35, PPPxxxxxx- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1<k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number


}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0237, 2024-11-02 09:28:20, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1<k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n>=2){
        long long sum=0;
        for(int k=1; k<=(n-2); k++){
            sum +=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){ //even
        long long sum2 =0;
        for(int i=1; i<=(n/2)-1; i++){
            sum2+= W(i)*W(n-1);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + sum2;
    }
    if(n%2!=0){//odd
        long long sum1=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum1 += W(i)*W(n-i);
        }
        return sum1;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0238, 2024-11-02 09:31:34, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1<k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n>=2){
        long long sum=0;
        for(int k=1; k<=(n-2); k++){
            sum +=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){ //even
        long long sum2 =0;
        for(int i=1; i<=(n/2)-1; i++){
            sum2+= W(i)*W(n-i);
        }
        return (( W(n/2) * ( W(n/2)+1 ))/2) + sum2;
    }
    if(n%2!=0){//odd
        long long sum1=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum1 += W(i)*W(n-i);
        }
        return sum1;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0239, 2024-11-02 12:45:52, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) {
        return 1;
    }
    else if(k > n){
        return 0;
    }
    else if(1 < k && k <= n) {
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0) {
        return 1;
    }
    else if(n == 1) {
        return 2;
    }
    else {
        long long sum = 0;
        for(int i=1 ; i <= n-2 ; i++) {
            sum += S(i) * S(n-i-1);
        }
        return 3 * S(n-1) + sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    else if(n == 1) return 1;
    else if(n%2 == 0) {
        long long sum = 0;
        for(int i=1 ; i<=(n/2)-1 ; i++) {
            sum += W(i) * W(n-i);
        }
        return (W(n/2) * W(n/2 + 1)) / 2 + sum;
    }
    else if(n%2 == 1) {
        long long sum = 0;
        for(int i=1 ; i<=((n+1)/2)-1 ; i++) {
            sum += W(i) * W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0240, 2024-11-02 12:50:24, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) {
        return 1;
    }
    else if(k > n){
        return 0;
    }
    else if(1 < k && k <= n) {
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0) {
        return 1;
    }
    else if(n == 1) {
        return 2;
    }
    else {
        long long sum = 0;
        for(int i=1 ; i <= n-2 ; i++) {
            sum += S(i) * S(n-i-1);
        }
        return 3 * S(n-1) + sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    else if(n == 1) return 1;
    else if(n%2 == 0) {
        long long sum = 0;
        for(int i=1 ; i<=(n/2)-1 ; i++) {
            sum += W(i) * W(n-i);
        }
        return ((W(n/2) * W(n/2)+ 1))/2 + sum;
    }
    else if(n%2 == 1) {
        long long sum = 0;
        for(int i=1 ; i<=((n+1)/2)-1 ; i++) {
            sum += W(i) * W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0241, 2024-11-02 14:34:31, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) {
        return 1;
    }
    else if(k > n){
        return 0;
    }
    else if(1 < k && k <= n) {
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0) {
        return 1;
    }
    else if(n == 1) {
        return 2;
    }
    else {
        long long sum = 0;
        for(int k=1 ; k <= n-2 ; k++) {
            sum += S(k) * S(n-k-1);
        }
        return 3 * S(n-1) + sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) {
        return 0;
    }
    else if(n == 1) {
        return 1;
    }
    else if(n%2 == 0) {

        long long sum = 0;
        for(int i = 1 ; i <= (n/2)-1 ; i++) {
            sum += W(i) * W(n-i);
        }
        
        return ((W(n/2) * (W(n/2)+ 1)))/2 + sum;
    }
    else if(n%2 == 1) {

        long long sum = 0;
        for(int i = 1 ; i <= ((n+1)/2)-1 ; i++) {
            sum += W(i) * W(n-i);
        }

        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0242, 2024-11-02 11:58:49, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) {
        return 1;
    }
    if(k > n){
        return 0;
    }

    if(k > 1 && k <=n ){
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }

    if(n >= 2){
        long long a = 0;
        
        for(int k=1;k<=n-2;k++){
            a += S(k)*S(n - k -1);
        }

        return 3*S(n-1) + a;


    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }

    if(n%2 == 0){
        long long a = 0;
        long long b = 0;
        a = ( W(n/2) * ( W(n/2) + 1 ))/2 ;
        for(int i=1;i<=(n/2)-1;i++){
            b += W(i)*W(n-i);
        }

        return a+ b;
    }
    else{
        long long b = 0;
        for(int i=1;i<=(n/2)-1;i++){
            b += W(i)*W(n-i);
        }
        return b;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0243, 2024-11-02 12:05:45, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > 1 && k <=n ){
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }
    if(k > n){
        return 0;
    }
    if(k == 0) {
        return 1;
    }


}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }

    if(n >= 2){
        long long a = 0;
        
        for(int k=1;k<=n-2;k++){
            a += S(k)*S(n - k -1);
        }

        return 3*S(n-1) + a;


    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }

    if(n%2 == 0 && n >= 2){
        long long a = 0;
        long long b = 0;
        a = ( W(n/2) * ( W(n/2) + 1 ))/2 ;
        for(int i=1;i<=(n/2)-1;i++){
            b += W(i)*W(n-i);
        }

        return a+ b;
    }
    else{
        long long b = 0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            b += W(i)*W(n-i);
        }
        return b;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0244, 2024-11-02 12:06:25, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) {
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(k > 1 && k <=n ){
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }


}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }

    if(n >= 2){
        long long a = 0;
        
        for(int k=1;k<=n-2;k++){
            a += S(k)*S(n - k -1);
        }

        return 3*S(n-1) + a;


    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }

    if(n%2 == 0 && n >= 2){
        long long a = 0;
        long long b = 0;
        a = ( W(n/2) * ( W(n/2) + 1 ))/2 ;
        for(int i=1;i<=(n/2)-1;i++){
            b += W(i)*W(n-i);
        }

        return a+ b;
    }
    else{
        long long b = 0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            b += W(i)*W(n-i);
        }
        return b;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0245, 2024-11-02 09:26:19, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    else if (k > n)
        return 0;

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number

    if (n == 0)
        return 1;
    else if (n == 1)
        return 2;

    int out = 0;
    for (int k = 1; k < n - 2; k++)
    {
        out += S(k) * S(n - k - 1);
    }

    return 3 * S(n - 1) + out;
}
long long W(int n)
{ // Wedderburn–Etherington Number

    if (n == 0)
        return 0;
    else if (n == 1)
        return 1;

    if (n % 2 == 0)
    {
        int out = 0;
        for (int i = 1; i < (n / 2) - 1; i++)
        {
            out += W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1) / 2) + out;
    }
    else
    {
        int out = 0;
        for (int i = 1; i < ((n + 1) / 2) - 1; i++)
        {
            out += W(i) * W(n - i);
        }

        return out;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0246, 2024-11-02 09:28:51, PPPP--PPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    else if (k > n)
        return 0;

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number

    if (n == 0)
        return 1;
    else if (n == 1)
        return 2;

    int out = 0;
    for (int k = 1; k <= (n / 2) - 2; k++)
    {
        out += S(k) * S(n - k - 1);
    }

    return (3 * S(n - 1)) + out;
}
long long W(int n)
{ // Wedderburn–Etherington Number

    if (n == 0)
        return 0;
    else if (n == 1)
        return 1;

    if (n % 2 == 0)
    {
        int out = 0;
        for (int i = 1; i <= (n / 2) - 1; i++)
        {
            out += W(i) * W(n - i);
        }

        return ((W(n / 2) * (W(n / 2) + 1)) / 2) + out;
    }
    else
    {
        int out = 0;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
        {
            out += W(i) * W(n - i);
        }

        return out;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0247, 2024-11-02 09:37:00, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    else if (k > n)
        return 0;

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number

    if (n == 0)
        return 1;
    else if (n == 1)
        return 2;

    else if (n >= 2)
    {
        long long out = 0;

        for (int k = 1; k <= n - 2; k++)
        {
            out += (S(k) * S(n - k - 1));
        }

        return (3 * S(n - 1)) + out;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number

    if (n == 0)
        return 0;
    else if (n == 1)
        return 1;

    if (n % 2 == 0)
    {
        long long  out = 0;
        for (int i = 1; i <= (n / 2) - 1; i++)
        {
            out += W(i) * W(n - i);
        }

        return ((W(n / 2) * (W(n / 2) + 1)) / 2) + out;
    }
    else
    {
        long long  out = 0;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
        {
            out += W(i) * W(n - i);
        }

        return out;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0248, 2024-11-02 11:25:00, PPPPPPPTTT (70%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle'
  //if (1 < k && k <= n)
    
  if (k > n)
    return 0;
  if (k == 0)
    return 1;
  return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
  if(n == 0) return 1;
  if(n == 1) return 2;
  long long sum=0;
  for(int k=1;k<=n-2;k++){
    sum += S(k)*S(n-k-1);
  }
  return 3*S(n-1) + sum;


}
long long W(int n)
{ // Wedderburn–Etherington Number

  if (n == 0)
    return 0;
  if (n == 1)
    return 1;
  if (n % 2 == 0)
  {
    long long sum = 0;
    for (int i = 1; i <= n / 2 - 1; i++)
    {
      sum += W(i) * W(n - 1);
    }
    return ((W(n / 2) * (W(n / 2) + 1)) / 2) + sum;
  }
  if (n & 2 == 1)
  {
    long long sum = 0;
    for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
    {
      sum += W(i) * W(n - i);
    }
    return sum;
  }
}
int main()
{
  string fn;
  int p1, p2;
  while (cin >> fn >> p1)
  {
    if (fn == "T")
    {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
    }
    else if (fn == "S")
    {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    }
    else if (fn == "W")
    {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  return 0;
}
# 0249, 2024-11-02 11:25:41, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle'
  //if (1 < k && k <= n)
    
  if (k > n)
    return 0;
  if (k == 0)
    return 1;
  return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
  if(n == 0) return 1;
  if(n == 1) return 2;
  long long sum=0;
  for(int k=1;k<=n-2;k++){
    sum += S(k)*S(n-k-1);
  }
  return 3*S(n-1) + sum;


}
long long W(int n)
{ // Wedderburn–Etherington Number

  if (n == 0)
    return 0;
  if (n == 1)
    return 1;
  if (n % 2 == 0)
  {
    long long sum = 0;
    for (int i = 1; i <= n / 2 - 1; i++)
    {
      sum += W(i) * W(n - 1);
    }
    return ((W(n / 2) * (W(n / 2) + 1)) / 2) + sum;
  }
  if (n % 2 == 1)
  {
    long long sum = 0;
    for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
    {
      sum += W(i) * W(n - i);
    }
    return sum;
  }
}
int main()
{
  string fn;
  int p1, p2;
  while (cin >> fn >> p1)
  {
    if (fn == "T")
    {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
    }
    else if (fn == "S")
    {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    }
    else if (fn == "W")
    {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  return 0;
}
# 0250, 2024-11-02 11:28:43, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle'
  //if (1 < k && k <= n)
    
  if (k > n)
    return 0;
  if (k == 0)
    return 1;
  return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
  if(n == 0) return 1;
  if(n == 1) return 2;
  long long sum=0;
  for(int k=1;k<=n-2;k++){
    sum += S(k)*S(n-k-1);
  }
  return 3*S(n-1) + sum;


}
long long W(int n)
{ // Wedderburn–Etherington Number

  if (n == 0)
    return 0;
  if (n == 1)
    return 1;
  if (n % 2 == 0)
  {
    long long sum = 0;
    for (int i = 1; i <= (n / 2) - 1; i++)
    {
      sum += W(i) * W(n - i);
    }
    return ((W(n / 2) * (W(n / 2) + 1)) / 2) + sum;
  }
 
    long long sum = 0;
    for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
    {
      sum += W(i) * W(n - i);
    }
    return sum;

}

int main()
{
  string fn;
  int p1, p2;
  while (cin >> fn >> p1)
  {
    if (fn == "T")
    {
      cin >> p2;
      cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
    }
    else if (fn == "S")
    {
      cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    }
    else if (fn == "W")
    {
      cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
  }
  return 0;
}

# 0251, 2024-11-02 09:30:26, P--PPPPPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(1<k&&k<=n){
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
if(k>n){
    return 0;
}
return 1;
}
long long S(int n) { // Schroder Number
if(n>=2){
long long sigma=0;
for(int k=1;k<=n-2;k++){
    sigma+=(S(k)*S(n-k-1));
}
sigma+=3*S(n-1);
return sigma;
}
if(n==1)
return 2;
return 1;
}
long long W(int n) { // Wedderburn–Etherington Number
if(n%2==0&&n!=0){
int sigma=0;
for(int i=1;i<=(n/2)-1;i++){
    sigma+=(W(i)*W(n-i));
}
sigma+=(W(n/2)*(W(n/2)+1))/2;
return sigma;
}
else if(n%2==1&&n!=1){
    int sigma=0;
    for(int i=1;i<=((n+1)/2)-1;i++){
        sigma+= W(i)*W(n-i);    
    }
    return sigma;
}






if(n==1)
return 1;
return 0;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0252, 2024-11-02 09:34:14, P--PPPPPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(1<k&&k<=n){
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
if(k>n){
    return 0;
}
return 1;
}
long long S(int n) { // Schroder Number
if(n>=2){
long long sigma=0;
for(int k=1;k<=n-2;k++){
    sigma+=(S(k)*S(n-k-1));
}
sigma+=3*S(n-1);
return sigma;
}
if(n==1)
return 2;
return 1;
}
long long W(int n) { // Wedderburn–Etherington Number
if(n%2==0&&n!=0){
long long sigma=0;
for(int i=1;i<=(n/2)-1;i++){
    sigma+=(W(i)*W(n-i));
}
sigma+=(W(n/2)*(W(n/2)+1))/2;
return sigma;
}
else if(n%2==1&&n!=1){
    long long sigma=0;
    for(int i=1;i<=((n+1)/2)-1;i++){
        sigma+= W(i)*W(n-i);    
    }
    return sigma;
}
if(n==1)
return 1;
return 0;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0253, 2024-11-02 10:56:40, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(n>=k){
    if(k!=0)
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    else
    return 1;
}
if(k>n){
    return 0;
}
return 1;
}
long long S(int n) { // Schroder Number
if(n>=2){
long long sigma=0;
for(int k=1;k<=n-2;k++){
    sigma+=(S(k)*S(n-k-1));
}
sigma+=3*S(n-1);
return sigma;
}
if(n==1)
return 2;
return 1;
}
long long W(int n) { // Wedderburn–Etherington Number
if(n%2==0&&n!=0){
long long sigma=0;
for(int i=1;i<=(n/2)-1;i++){
    sigma+=(W(i)*W(n-i));
}
sigma+=(W(n/2)*(W(n/2)+1))/2;
return sigma;
}
else if(n%2==1&&n!=1){
    long long sigma=0;
    for(int i=1;i<=((n+1)/2)-1;i++){
        sigma+= W(i)*W(n-i);    
    }
    return sigma;
}
if(n==1)
return 1;
return 0;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0254, 2024-11-02 14:31:22, PPPxxxxxx- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  // Schroder Triangle
    if(k>n){return 0;}
    if(k == 0){return 1;}
    return T(n,k - 1) + T(n - 1,k - 1) + T(n - 1,k) ;

}
long long S(int n) {         // Schroder Number


}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0255, 2024-11-02 14:37:26, PPPPPP---- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  // Schroder Triangle
    if(k>n){return 0;}
    if(k == 0){return 1;}
    return T(n,k - 1) + T(n - 1,k - 1) + T(n - 1,k) ;

}
long long S(int n) 
{ // Schroder Number
    long long int ans = 0;
    if (n == 0)
    {
        return 1;
    }
    if (n == 1)
    {
        return 2;
    }
    ans += 3*S(n-1);
    for (size_t k = 1; k <= n-2; k++)
    {
        ans += S(k) * S(n-k-1);
    }
    return ans;

}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0256, 2024-11-02 14:48:17, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  // Schroder Triangle
    if(k>n){return 0;}
    if(k == 0){return 1;}
    return T(n,k - 1) + T(n - 1,k - 1) + T(n - 1,k) ;

}
long long S(int n) 
{ // Schroder Number
    long long int ans;
    if (n == 0)
    {
        return 1;
    }
    if (n == 1)
    {
        return 2;
    }
    ans += 3*S(n-1);
    for (size_t k = 1; k <= n-2; k++)
    {
        ans += S(k) * S(n-k-1);
    }
    return ans;

}
long long W(int n) 
{ // Wedderburn–Etherington Number
    long long int ans = 0;
    if (n == 0)
    {
        return 0;
    }
    if (n == 1)
    {
        return 1;
    }
    if (n % 2 == 0)
    {
        ans += (W(n/2)*(W(n/2) + 1));
        ans /= 2;
        for (size_t i = 1; i <= (n/2) - 1; i++)
        {
            ans += W(i) * W(n-i);
        }
        return ans;
    }
    if (n % 2 == 1)
    {
        for (size_t i = 1; i <= ((n+1)/2) - 1; i++)
        {
            ans += W(i) * W(n-i);
        }
        return ans;
    }
    
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0257, 2024-11-02 09:29:24, PPPP--PPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0) return 1;
    if(k>n)  return 0;
    return T(n, k- 1) + T(n- 1, k- 1) + T(n-1, k) ;
    
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    long long ans=0;
    ans+=3*S(n-1);
    int k;
    for(k=1;k<n-3;k++){
        ans+=S(k)*S(n-k-1);
    }
    return ans;
}
long long W(int n) { // Wedderburn–Etherington Number
    long long ans=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0){      
        ans+=(W(n/2)*(W(n/2)+1))/2;
        int i;
        for(i=1;i<n/2;i++){
            ans+=W(i)*(W(n-i));
        }
    }
    else {
        int i;
        for(i=1;i<(n+1)/2;i++){
            ans+=W(i)*(W(n-i));
        }
    }
    return ans;
}
int main() {
    string fn;
    int p1, p2; 
    while (cin >> fn >> p1) {
    if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0258, 2024-11-02 10:53:28, PPPP--PPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0) return 1;
    if(k>n)  return 0;
    return T(n, k- 1) + T(n- 1, k- 1) + T(n-1, k) ;
    
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    int ans=0;
    ans+=3*S(n-1);
    int k;
    for(k=1;k<n-3;k++){
        ans+=S(k)*S(n-k-1);
    }
    return ans;
}
long long W(int n) { // Wedderburn–Etherington Number
    int ans=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0){      
        ans+=(W(n/2)*(W(n/2)+1))/2;
        int i;
        for(i=1;i<n/2;i++){
            ans+=W(i)*(W(n-i));
        }
    }
    else {
        int i;
        for(i=1;i<(n+1)/2;i++){
            ans+=W(i)*(W(n-i));
        }
    }
    return ans;
}
int main() {
    string fn;
    int p1, p2; 
    while (cin >> fn >> p1) {
    if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0259, 2024-11-02 10:54:27, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0) return 1;
    if(k>n)  return 0;
    return T(n, k- 1) + T(n- 1, k- 1) + T(n-1, k) ;
    
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    int ans=0;
    ans+=3*S(n-1);
    int k;
    for(k=1;k<n-1;k++){
        ans+=S(k)*S(n-k-1);
    }
    return ans;
}
long long W(int n) { // Wedderburn–Etherington Number
    int ans=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0){      
        ans+=(W(n/2)*(W(n/2)+1))/2;
        int i;
        for(i=1;i<n/2;i++){
            ans+=W(i)*(W(n-i));
        }
    }
    else {
        int i;
        for(i=1;i<(n+1)/2;i++){
            ans+=W(i)*(W(n-i));
        }
    }
    return ans;
}
int main() {
    string fn;
    int p1, p2; 
    while (cin >> fn >> p1) {
    if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0260, 2024-11-02 12:52:14, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long sum=0;
    for (int k=1;k<=n-2;k++) {
        sum+=(S(k)*S(n-k-1));
    }
    sum+=(3*S(n-1));
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2==0) {
        long long sumeven=0;
        for (int i=1;i<=n/2-1;i++) {
            sumeven+=(W(i)*W(n-1));
        }
        return sumeven;
    }
    int sumodd=0;
    for (int i=1;i<(n+1)/2-1;i++) {
        sumodd+=(W(i)*W(n-i));
    }
    return sumodd;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0261, 2024-11-02 14:21:27, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long sum=0;
    for (int k=1;k<=n-2;k++) {
        sum+=(S(k)*S(n-k-1));
    }
    sum+=(3*S(n-1));
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2==0) {
        long long sumeven=0;
        for (int i=1;i<=n/2-1;i++) {
            sumeven+=(W(i)*W(n-1));
        }
        return sumeven;
    }
    long long sumodd=0;
    for (int i=1;i<(n+1)/2-1;i++) {
        sumodd+=(W(i)*W(n-i));
    }
    return sumodd;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0262, 2024-11-02 14:26:48, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long sum=0;
    for (int k=1;k<=n-2;k++) {
        sum+=(S(k)*S(n-k-1));
    }
    sum+=(3*S(n-1));
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2==0) {
        long long sumeven=0;
        for (int i=1;i<=(n/2)-1;i++) {
            sumeven+=(W(i)*W(n-i));
        }
        sumeven+=(W(n/2)*(W(n/2)+1))/2;
        return sumeven;
    }
    long long sumodd=0;
    for (int i=1;i<=((n+1)/2)-1;i++) {
        sumodd+=(W(i)*W(n-i));
    }
    return sumodd;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0263, 2024-11-02 12:44:29, x--PPPxxxx (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(1>k && k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n) return 0;
    else if(k==0) return 1;
}
long long S(int n) { 
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2){
        int sum=0;
        for(int i=1;i<=n-2;i++){
            sum=sum+S(i)*S(n-i-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) { 
    if(n%2==0){
        int first=(W(n/2)*(W(n/2)+1))/2;
        int sum=0;
        for(int i=1;i<=(n/2)-1;i++){
            sum=sum+(W(i)*W(n-i));
        }
        return first+sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0264, 2024-11-02 12:47:14, P--PPPPPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k>1 && k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n) return 0;
    else if(k==0) return 1;
}
long long S(int n) { 
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2){
        int sum=0;
        for(int i=1;i<=n-2;i++){
            sum=sum+S(i)*S(n-i-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        int first=(W(n/2)*(W(n/2)+1))/2;
        int sum=0;
        for(int i=1;i<=(n/2)-1;i++){
            sum=sum+(W(i)*W(n-i));
        }
        return first+sum;
    }
    if(n%2!=0){
        int sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum=sum+(W(i)*W(n-i));
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0265, 2024-11-02 12:50:49, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k>n) return 0;
    if(k==0) return 1;
    if(k>1 && k<=n){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    
}
long long S(int n) { 
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        int sum=0;
        for(int i=1;i<=n-2;i++){
            sum=sum+S(i)*S(n-i-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        int first=(W(n/2)*(W(n/2)+1))/2;
        int sum=0;
        for(int i=1;i<=(n/2)-1;i++){
            sum=sum+(W(i)*W(n-i));
        }
        return first+sum;
    }
    if(n%2!=0){
        int sum=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum=sum+(W(i)*W(n-i));
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0266, 2024-11-02 12:45:31, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum = sum + S(k) + S(n-k-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) {
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum = 0;
        for(int i=1;i<(n/2)-1;i++){
            sum = sum + (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)-1))/2) + sum; 
    }
    if(n%2==1){
        long long sum = 0;
        for(int i=1;i<((n+1)/2)-1;i++){
            sum = sum + (W(i)*W(n-i));
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0267, 2024-11-02 13:48:21, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum = sum + (S(k)*S(n-k-1));
    }
    return 3*S(n-1) + sum;
}
long long W(int n) {
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum = 0;
        for(int i=1;i<=(n/2)-1;i++){
            sum = sum + (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)-1))/2) + sum; 
    }
    if(n%2==1){
        long long sum = 0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum = sum + (W(i)*W(n-i));
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0268, 2024-11-02 13:50:14, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum = sum + (S(k)*S(n-k-1));
    }
    return 3*S(n-1) + sum;
}
long long W(int n) {
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum = 0;
        for(int i=1;i<=(n/2)-1;i++){
            sum = sum + (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)+1))/2) + sum; 
    }
    if(n%2==1){
        long long sum = 0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum = sum + (W(i)*W(n-i));
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0269, 2024-11-02 12:55:15, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    

}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum=0;

    for(int i=1;i<n-2;i++){
        sum+=S(i)*S(n-i-1);
    }
    long long p;
    p=sum+3*S(n-1);
    return p;
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long sum =0;
        for(int k=1;k<(n/2-1);k++){
            sum+=W(k)*W(n-k);
        }
        sum+=W(n/2)*(W(n/2)+1);
        sum/=2;
        return sum;
    }
    else if(n%2==1){
        long long sum =0;
        for(int i=1;i<((n+1)/2)-1;i++){
            sum+=W(i)*W(n-1);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0270, 2024-11-02 15:01:26, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    

}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    if(n>=2){
        long long sum = 3*S(n-1);
        for(int k=1;k<=n-2;k++){
            sum += S(k)*S(n-k-1);
        }
        return sum;
    }
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long sum =0;
        for(int k=1;k<=(n/2-1);k++){
            sum+=W(k)*W(n-k);
        }
        sum+=W(n/2)*(W(n/2)+1);
        sum/=2;
        return sum;
    }
    else if(n%2==1){
        long long sum =0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum+=W(i)*W(n-1);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0271, 2024-11-02 15:30:02, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    

}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    if(n>=2){
        long long sum = 3*S(n-1);
        for(int k=1;k<=n-2;k++){
            sum += S(k)*S(n-k-1);
        }
        return sum;
    }
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1)return 1;
    if(n%2==0&&n!=0){
        long long sum =0;
        for(int k=1;k<=(n/2-1);k++){
            sum+=W(k)*W(n-k);
        }
        sum+=W(n/2)*(W(n/2)+1)/2;
        return sum;
        
    }
    else if(n%2==1&&n!=1){
        long long sum =0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0272, 2024-11-02 09:33:16, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)
        return 1;
    if(k>n)
        return 0;
    else
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0)
        return 1;
    else if(n==1)
        return 2;
    long long s=3*S(n-1);
    for(int i=1;i<n-1;i++){
        s+=S(i)*S(n-i-1);
    }
    return s;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    
    if(n%2==0){
        long long s1 = (W(n/2)*(W(n/2)+1))/2;
        long long kep = s1;
    for(int i=1;i<n/2;i++){
        s1+= W(i)*W(n-i);
    }
    }
    else if(n%2!=0){
        for(int i=1;i<(n+1)/2;i++){
            kep += W(i)*W(n-i);
    }
    }

    return kep; 


    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0273, 2024-11-02 09:34:18, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)
        return 1;
    if(k>n)
        return 0;
    else
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0)
        return 1;
    else if(n==1)
        return 2;
    long long s=3*S(n-1);
    for(int i=1;i<n-1;i++){
        s+=S(i)*S(n-i-1);
    }
    return s;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    long long s1 = (W(n/2)*(W(n/2)+1))/2;
    long long kep = s1;
    if(n%2==0){
        
    for(int i=1;i<n/2;i++){
        s1+= W(i)*W(n-i);
    }
    }
    else if(n%2!=0){
        
        for(int i=1;i<(n+1)/2;i++){
            kep += W(i)*W(n-i);
    }
    }

    return kep; 


    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0274, 2024-11-02 10:33:59, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)
        return 1;
    if(k>n)
        return 0;
    else
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0)
        return 1;
    else if(n==1)
        return 2;
    long long s=3*S(n-1);
    for(int i=1;i<n-1;i++){
        s+=S(i)*S(n-i-1);
    }
    return s;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    // long long s1 = (W(n/2)*(W(n/2)+1))/2;
    // long long kep = s1;
    if(n%2==0){
      long long s1 = (W(n/2)*(W(n/2)+1))/2;  
    for(int i=1;i<n/2;i++){
        
        s1+= W(i)*W(n-i);
    }
        return s1; 
    }
    else if(n%2!=0){
        long long kep = 0;
        for(int i=1;i<(n+1)/2;i++){
            kep += W(i)*W(n-i);
    }
        return kep;
    }



    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

// T 10 11
// T 100 0
// T 12 10
// S 0
// S 1
// S 20
// W 0
// W 1
// W 20

# 0275, 2024-11-02 09:21:05, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k ==0)return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;

    long long int sum = 0;
    for(int i = 1;i<n-1;i++){
        sum=sum+S(i)*S(n-i-1);
    }

    return 3*S(n-1) + sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2 == 0){
        int sum = 0;
        for(int i = 1;i<n/2;i++){
            sum = sum + W(i)*W(n-i);
        }
        return(W(n/2)*(W(n/2)+1))/2 + sum;
    }else{
        int sum = 0; 
        for(int i = 1;i<(n+1)/2;i++){
            sum = sum + W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0276, 2024-11-02 12:02:45, Compilation error (0%)

#include<bits/stdc++.h>

using namespace std;


string check(bool a[5][5],int w,int h){
    int num = 0;
    for(int i = 0;i<3;i++){
        for(int j = 0;j<3;j++){
            if((i == 1&&j == 1)||w-1+i == -1||h-1+j == -1||w-1+i == 5||h-1+j == 5)continue;
            if(a[w-1+i][h-1+j])num++;
        }
    }
    return to_string(num);
}

void flood(bool a[5][5],string *b[5][5],int w,int h){
    if(check(a,w,h) == "0"){
        for(int i = 0;i<3;i++){
            for(int j = 0;j<3;j++){
                if((i == 1&&j == 1)||w-1+i == -1||h-1+j == -1||w-1+i == 5||h-1+j == 5)continue;
                b[w-1+i][h-1+j] = &check(a,w-1+i,h-1+j);
                flood(a,b,w-1+i,h-1+j);
            }
        }
    }
}

int main() {
    int w,h;


    bool a[5][5] = {{1,0,0,0,0},{0,1,0,0,0},{1,0,0,0,0},{0,0,0,0,1},{1,0,0,0,1}};
    //,b[5][5] = {{},{},{},{},{}},c[5][5] = {{},{},{},{},{}},d[5][5] = {{},{},{},{},{}},e[5][5] = {{},{},{},{},{}};

    for(int i = 0;i<5;i++){
            for(int j = 0;j<5;j++){
                cout << a[i][j] << " ";
            }
            cout << endl;
        }

    cout <<endl;

    for(int i = 0;i<5;i++){
        for(int j = 0;j<5;j++){
            cout << check(a,i,j) << " ";
        }
        cout << endl;
    }

    string board[5][5];

    
    for(int i = 0;i<5;i++){
        for(int j = 0;j<5;j++){
            board[i][j] = "-";
        }
    }


    while(cin >> w >> h){

        w--;
        h--;
        if(w>4||h>4||w<0||h<0){
            cout << "invalid input" << endl;
            continue;
        }

        if(a[w][h]){
            cout << "game over";
            break;
        }
        else{
            board[w][h] = check(a,w,h);
            flood(a,&board,w,h);
        }

        cout << "  1 2 3 4 5" <<endl;
        for(int i = 0;i<5;i++){
            cout << i+1 << " ";
            for(int j = 0;j<5;j++){
                cout << board[i][j] << " ";
            }
            cout << endl;
        }
    }
    
}
# 0277, 2024-11-02 12:03:18, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k ==0)return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;

    long long int sum = 0;
    for(int i = 1;i<n-1;i++){
        sum=sum+S(i)*S(n-i-1);
    }

    return 3*S(n-1) + sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2 == 0){
        int sum = 0;
        for(int i = 1;i<n/2;i++){
            sum = sum + W(i)*W(n-i);
        }
        return(W(n/2)*(W(n/2)+1))/2 + sum;
    }else{
        int sum = 0; 
        for(int i = 1;i<(n+1)/2;i++){
            sum = sum + W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0278, 2024-11-02 09:23:32, PPPP--PxxT (50%)

// 161
#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n){
        return 0;
    }
    if(k==0){
        return 1;
    }
    
    return T(n, k-1)+T(n-1, k-1)+T(n-1, k);

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }

    long long total = 0;
    for(long long k=1; k<=n-2; k++){
        total += (3*S(n-1))+( S(k)*S(n-k-1) );
    }

    return total;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }else if(n==1){
        return 1;
    }
    long long total = 0;
    if(n%2==0){
        for(long long i=1; i<=(n/2)-1; i++){
            total += ( (W(n/2) * (W(n/2)+1)) / 2) + (W(i) * W(n-i));
        }
    }else{
        for(long long i=1; i<=( (n+1)/2 )-1; i++){
            total += ( W(i)*W(n-i) );
        }
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0279, 2024-11-02 09:27:44, PPPPPPP--- (70%)

// 161
#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n){
        return 0;
    }
    if(k==0){
        return 1;
    }
    
    return T(n, k-1)+T(n-1, k-1)+T(n-1, k);

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }

    long long total = 0;
    for(long long k=1; k<=n-2; k++){
        total += ( S(k)*S(n-k-1) );
    }

    return (3*S(n-1))+total;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }else if(n==1){
        return 1;
    }
    long long total = 0;
    if(n%2==0){
        for(long long i=1; i<=(n/2)-1; i++){
            total += ( (W(n/2) * (W(n/2)+1)) / 2) + (W(i) * W(n-i));
        }
    }else{
        for(long long i=1; i<=( (n+1)/2 )-1; i++){
            total += ( W(i)*W(n-i) );
        }
    }

    return total;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0280, 2024-11-02 09:29:30, PPPPPPPPPP (100%)

// 161
#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n){
        return 0;
    }
    if(k==0){
        return 1;
    }
    
    return T(n, k-1)+T(n-1, k-1)+T(n-1, k);

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }

    long long total = 0;
    for(long long k=1; k<=n-2; k++){
        total += ( S(k)*S(n-k-1) );
    }

    return (3*S(n-1))+total;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }else if(n==1){
        return 1;
    }
    long long total = 0;
    if(n%2==0){
        for(long long i=1; i<=(n/2)-1; i++){
            total += (W(i) * W(n-i));
        }
    }else{
        for(long long i=1; i<=( (n+1)/2 )-1; i++){
            total += ( W(i)*W(n-i) );
        }
    }

    if(n%2==0){
        return ( (W(n/2) * (W(n/2)+1)) / 2) + total;
    }else{
        return total;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0281, 2024-11-02 13:00:13, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1 ;
    else if(k > n) return 0 ;
    return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k) ;
}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1 ;
    else if (n == 1) return 2 ;
    long long s ;
    for(long long k = 1 ; k <= n - 2 ; k++) {
    s = S(k) * S(n - k - 1) ;
    }
    return (3 * S(n - 1)) + s ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0 ;
    else if(n == 1) return 1 ;
    long long w ; 
    if((n % 2 == 0) && (n > 0)) {
        for(long long i = 1 ; i <= ((n / 2) - 1) ; i++) {
            w = W(i) * W(n - i) ;
        }
    }
    return ((W(n / 2) * (W(n / 2) + 1)) / 2) + w ;     
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0282, 2024-11-02 13:11:48, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1 ;
    else if(k > n) return 0 ;
    return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k) ;
}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1 ;
    else if (n == 1) return 2 ;
    long long s = 0 ;
    for(long long k = 1 ; k <= n - 2 ; k++) {
    s += S(k) * S(n - k - 1) ;
    }
    return (3 * S(n - 1)) + s ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0 ;
    else if(n == 1) return 1 ;
    long long w = 0 ; 
    for(long long i = 1 ; i <= ((n / 2) - 1) ; i++) {
        w += W(i) * W(n - i) ;
    }
    return ((W(n / 2) * (W(n / 2) + 1)) / 2) + w ;     
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0283, 2024-11-02 13:21:59, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1 ;
    else if(k > n) return 0 ;
    return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k) ;
}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1 ;
    else if (n == 1) return 2 ;
    long long s = 0 ;
    for(long long k = 1 ; k <= n - 2 ; k++) {
    s += S(k) * S(n - k - 1) ;
    }
    return (3 * S(n - 1)) + s ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0 ;
    else if(n == 1) return 1 ;
    long long w = 0 ; 
    if(n % 2 == 0) {
        for(long long i = 1 ; i <= ((n / 2) - 1) ; i++) {
            w += W(i) * W(n - i) ;
        }
    return ((W(n / 2) * (W(n / 2) + 1)) / 2) + w ;
    } 
    if(n % 2 == 1) {
        for(long long i = 1 ; i <= (((n + 1)/ 2) - 1) ; i++) {
            w += W(i) * W(n - i) ;
        }
        return w ;
    }     
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0284, 2024-11-02 12:52:00, P--PPPP--- (50%)

#include <iostream>

using namespace std;

long long T(long long n, long long k) {  // Schroder Triangle
    if(k>1&&k<=n){
        return T(n,k-1)+T(n-1,k-1) +T(n-1,k);
    }
    if(k>n){
        return 0;}
    if(k==0){return 1;}
    
    
}
long long S(int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    long long sum=0;

    for(int k=1;k<n-1;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;

}
long long W(long long n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==0){
        long long sum=0,ss;
        ss=(W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<(n/2)+1;i++){
            sum+=W(i)*W(n-i);
        }
        return ss+sum;
    }
    long long st=0;
        for(int i=1;i<(((n+1)/2)-1);i++){
            st+=W(i)*W(n-i);
        }
        return st;
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0285, 2024-11-02 12:56:31, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(long long n, long long k) {  // Schroder Triangle
    if(k>1&&k<=n){
        return T(n,k-1)+T(n-1,k-1) +T(n-1,k);
    }
    if(k>n){
        return 0;}
    if(k==0){return 1;}
    
    
}
long long S(int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    long long sum=0;

    for(int k=1;k<n-1;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;

}
long long W(long long n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==0){
        long long sum=0,ss;
        ss=(W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<=(n/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return ss+sum;
    }
    if(n%2!=0){
    long long st=0;
        for(int i=1;i<=(((n+1)/2)-1);i++){
            st+=W(i)*W(n-i);
        }
        return st;
    }
   
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0286, 2024-11-02 15:19:40, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    
        if(k>=1&&k<=n){
        
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    if(k>n){
        return 0;
    }
    if(k==0){return 1;}
    
    
}
long long S(int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    long long sum=0;

    for(int k=1;k<n-1;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;

}
long long W(long long n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==0){
        long long sum=0,ss;
        ss=(W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<=(n/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return ss+sum;
    }
    if(n%2!=0){
    long long st=0;
        for(int i=1;i<=(((n+1)/2)-1);i++){
            st+=W(i)*W(n-i);
        }
        return st;
    }
   
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0287, 2024-11-02 10:13:42, TTTPPPP--T (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return T(n,k);

    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}

long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int sum=0;
    for(int i=1;i<=n-2;++i){
        sum+=S(i)*S(n-i-1);
    }

    return 3*S(n-1)+sum;
}

long long W(int n) {   
    // Wedderburn–Etherington Number
    if(n>1){
        if(n%2==1){
            int sum=0;
            for(int i=1;i<(n+1)/2-1;i++){
                sum+=W(i)*W(n-i);
            }
            return sum;
        }
        if(n%2==0){
            int sum=0;
            for(int i=1;i<n/2-1;i++){
                sum+=W(i)*W(n-i);
            }
            return sum+(W(n/2)*(W(n/2)+1))/2;
        }
    }      
    if(n==1) return 1;
    return 0;

}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
/*
T 10 11
T 100 0
T 12 10
S 0
S 1
S 20
W 0
W 1
W 20
*/
# 0288, 2024-11-02 10:41:25, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;

    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}

long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;

    long long sum=0;
    for(int k=1;k<=n-2;++k){
        sum+=S(k)*S(n-k-1);
    }

    return 3*S(n-1)+sum;
}

long long W(int n) {   
    // Wedderburn–Etherington Number
    if(n==1) return 1;
    if(n==0) return 0;
    if(n>1){
        if(n%2==1){
            int sum=0;
            for(int i=1;i<(n+1)/2-1;i++){
                sum+=W(i)*W(n-i);
            }
            return sum;
        }
        if(n%2==0){
            int sum=0;
            for(int i=1;i<n/2-1;i++){
                sum+=W(i)*W(n-i);
            }
            return sum+(W(n/2)*(W(n/2)+1))/2;
        }
    }      
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
/*
T 10 11
T 100 0
T 12 10
S 0
S 1
S 20
W 0
W 1
W 20
*/
# 0289, 2024-11-02 10:44:12, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;

    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}

long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;

    long long sum=0;
    for(int k=1;k<=n-2;++k){
        sum+=S(k)*S(n-k-1);
    }

    return 3*S(n-1)+sum;
}

long long W(int n) {   
    // Wedderburn–Etherington Number
    if(n==1) return 1;
    if(n==0) return 0;

    if(n%2==1){
        long long sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    if(n%2==0){
        long long sum=0;
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum+(W(n/2)*(W(n/2)+1))/2;
    }
       
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
/*
T 10 11
T 100 0
T 12 10
S 0
S 1
S 20
W 0
W 1
W 20
*/

# 0290, 2024-11-02 09:19:07, TTTP--P--T (20%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k>n) return 0;
    if (k = 0) return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k-1);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    int sum = 0;
    sum += 3*S(n-1);
    for (int k=1;k<=n-2;k++) {
        sum += S(k)*S(k-1);
    }
    return sum;

}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    int sum = 0;    
    if (n%2==0) {
        sum += W(n/2)*(W(n/2)+1); 
        for (int i=1;i<=(n/2)-1;i++) {
            sum += W(i)*W(i-1);
        }
    }
    if (n%2!=0) {
        for (int i=1;i<=((n+1)/2)-1;i++) {
            sum += W(i)*W(i-1);
        }
    }
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;
}
# 0291, 2024-11-02 09:19:30, P--P--P--- (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k>n) return 0;
    if (k == 0) return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k-1);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    int sum = 0;
    sum += 3*S(n-1);
    for (int k=1;k<=n-2;k++) {
        sum += S(k)*S(k-1);
    }
    return sum;

}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    int sum = 0;    
    if (n%2==0) {
        sum += W(n/2)*(W(n/2)+1); 
        for (int i=1;i<=(n/2)-1;i++) {
            sum += W(i)*W(i-1);
        }
    }
    if (n%2!=0) {
        for (int i=1;i<=((n+1)/2)-1;i++) {
            sum += W(i)*W(i-1);
        }
    }
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;
}
# 0292, 2024-11-02 09:26:07, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k>n) return 0;
    if (k == 0) return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long int sum = 0;
    sum += 3*S(n-1);
    for (int k=1;k<=n-2;k++) {
        sum += S(k)*S(n-k-1);
    }
    return sum;

}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    long long int sum = 0;    
    if (n%2==0) {
        sum += (W(n/2)*(W(n/2)+1))/2; 
        for (int i=1;i<=(n/2)-1;i++) {
            sum += W(i)*W(n-i);
        }
    }
    if (n%2!=0) {
        for (int i=1;i<=((n+1)/2)-1;i++) {
            sum += W(i)*W(n-i);
        }
    }
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;
}

# 0293, 2024-11-02 09:44:15, PPPP--PPP- (70%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    if (k > n)
        {
            return 0;
        }
    if (1 < k <= n)
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
        return 1;
    if (n == 1)
        return 2;
    
    if (n >= 2)
    {
        long long result = 0;
        
        for (int i = 1; i <= -2; i-- )
        {
            result += S(i) * S(n - i - 1);
        }
        result += 3 * (S(n - 1));
        return result;
        
    }
    
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
        return 0;
    if (n == 1)
        return 1;
    if (n % 2 == 0)
    {
        long long w1 = 0, w2 = 0;
        w1 = (W(n / 2) * (W(n / 2) + 1)) / 2;
        for (int i = 1; i <= (n / 2) - 1; i++)
        {
            w2 += (W(i) * W(n - i));
        }
        return w1 + w2;
    }
    if (n % 2 == 1)
    {
        long long w2 = 0;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
        {
            w2 += (W(i) * W(n - i));
        }
        return w2;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0294, 2024-11-02 09:47:03, PPPPPPPPPP (100%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    if (k > n)
        {
            return 0;
        }
    if (1 < k <= n)
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
        return 1;
    if (n == 1)
        return 2;
    
    if (n >= 2)
    {
        long long result = 0,final = 0;
        
        for (int i = 1; i <= (n-2); i++ )
        {
            result += S(i) * S(n - i - 1);
        }
        final = result + 3 * (S(n - 1));
        return final;
        
    }
    
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
        return 0;
    if (n == 1)
        return 1;
    if (n % 2 == 0)
    {
        long long w1 = 0, w2 = 0;
        w1 = (W(n / 2) * (W(n / 2) + 1)) / 2;
        for (int i = 1; i <= (n / 2) - 1; i++)
        {
            w2 += (W(i) * W(n - i));
        }
        return w1 + w2;
    }
    if (n % 2 == 1)
    {
        long long w2 = 0;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++)
        {
            w2 += (W(i) * W(n - i));
        }
        return w2;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0295, 2024-11-02 12:55:05, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1; 
    else if (k>n) return 0;
    else return T(n, k-1) + T(n-1, k-1) + T(n-1, k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    else if (n ==1) return 2;
    else{
        long long sum = 0;
        for (int k = 1; k <= n-2; k++){
            sum += S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0 || n==1) return n;
    else if (n % 2 == 1){
        long long sum = 0;
        for(int i = 1; i <= (((n+1)/2) -1); i++){
            sum += W(i) * W(n-i);
        }
        return sum;
    }
    else{
        long long sum = 0;
        for(int i = 1; i <= ((n/2) -1); i++){
            sum += W(i) * W(n-i);
        }
        return W(n/2)*((W(n/2)+1)/2) + sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0296, 2024-11-02 12:57:32, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1; 
    else if (k>n) return 0;
    else return T(n, k-1) + T(n-1, k-1) + T(n-1, k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    else if (n ==1) return 2;
    else{
        long long sum = 0;
        for (int k = 1; k <= n-2; k++){
            sum += S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0 || n==1) return n;
    else if (n % 2 == 1){
        long long sum = 0;
        for(int i = 1; i <= (((n+1)/2) -1); i++){
            sum += W(i) * W(n-i);
        }
        return sum;
    }
    else{
        long long sum = 0;
        for(int i = 1; i <= (n/2) -1; i++){
            sum += W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0297, 2024-11-02 09:20:44, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k > n)
    {
        return 0;
    }
    else if (k == 0)
    {
        return 1;
    }

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}

long long S(int n)
{ // Schroder Number
    if (n == 0)
    {
        return 1;
    }
    else if (n == 1)
    {
        return 2;
    }

    long long sum = 0;
    for (int k = 1; k <= n - 2; k++)
    {
        sum += (S(k) * S(n - k - 1));
    }

    return 3 * S(n - 1) + sum;
}

long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0 || n == 1)
    {
        return n;
    }

    if (n % 2 == 0)
    {
        long long sum = 0;
        for (int i = 1; i < n / 2 - 1; i++)
        {
            sum += W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sum;
    }
    else
    {
        long long sum = 0;
        for (int i = 1; i < (n + 1) / 2 - 1; i++)
        {
            sum += W(i) * W(n - i);
        }

        return sum;
    }
}

int main()
{
    string fn;
    int p1, p2;

    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0298, 2024-11-02 09:23:35, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k > n)
    {
        return 0;
    }
    else if (k == 0)
    {
        return 1;
    }

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}

long long S(int n)
{ // Schroder Number
    if (n == 0)
    {
        return 1;
    }
    else if (n == 1)
    {
        return 2;
    }

    long long sum = 0;
    for (int k = 1; k <= n - 2; k++)
    {
        sum += (S(k) * S(n - k - 1));
    }

    return 3 * S(n - 1) + sum;
}

long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0 || n == 1)
    {
        return n;
    }

    if (n % 2 == 0)
    {
        long long sum = 0;
        for (int i = 1; i <= n / 2 - 1; i++)
        {
            sum += W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sum;
    }
    else
    {
        long long sum = 0;
        for (int i = 1; i <= (n + 1) / 2 - 1; i++)
        {
            sum += W(i) * W(n - i);
        }

        return sum;
    }
}

int main()
{
    string fn;
    int p1, p2;

    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}

# 0299, 2024-11-02 12:40:07, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0) return 1;
if(k>n) return 0;
if(1<k && k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0) return 1;
if(n == 1) return 2;
if(n>=2) {
int sum = 3*S(n-1);
for(int k = 1 ; k <= n-2 ; k++) {
    sum+=(S(k)*S(n-k-1));
}
return sum;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0) return 0;
if(n == 1) return 1;
if(n%2 == 0) {
    int sum = W(n/2)*(W(n/2)+1);
    for(int i = 1 ; i <= (n/2)-1 ; i++) {
        sum+=W(i)*W(n-i);
    }
    return sum;
}
if(n%2 != 0) {
    int sums = 0;
    for(int i = 1 ; i <= ((n+1)/2)-1 ; i++) {
        sums+=W(i)*W(n-i);
    }
    return sums;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0300, 2024-11-02 12:41:15, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0) return 1;
if(k>n) return 0;
if(1<k && k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0) return 1;
if(n == 1) return 2;
if(n>=2) {
int sum = 3*S(n-1);
for(int k = 1 ; k <= n-2 ; k++) {
    sum+=(S(k)*S(n-k-1));
}
return sum;
}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0) return 0;
if(n == 1) return 1;
if(n%2 == 0) {
    int sum = (W(n/2)*(W(n/2)+1))/2;
    for(int i = 1 ; i <= (n/2)-1 ; i++) {
        sum+=W(i)*W(n-i);
    }
    return sum;
}
if(n%2 != 0) {
    int sums = 0;
    for(int i = 1 ; i <= ((n+1)/2)-1 ; i++) {
        sums+=W(i)*W(n-i);
    }
    return sums;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0301, 2024-11-02 11:28:22, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {
    if (k==0)
    {
        return 1;
    }
    else if (k>n)
    {
        return 0;
    }
    else if(k>1&&k<=n)
    {
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {         // Schroder Number
    if (n==0)
    {
        return 1;
    }
    if (n==1)
    {
        return 2;
    }
    else if (n>=2)
    {
        long long tmp =0;
        for (int i = 1 ; i <=n-2 ; i++)
        {
            tmp+=(S(i)*S(n-i-1));
        }
        return 3*(S(n-1))+tmp;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0;
    else if (n==1) return 1;
    else if (n%2==1)
    {
        long long tmp=0;
        for (int i = 1 ;i<=((n+1)/2)-1 ; i++)
        {
            tmp+=W(i)*W(n-i);
        }
        return tmp;
    }
    else if (n%2==0)
    {
        long long tmp1=0;
        long long tmp2=0;
        tmp1 = W(n/2)*(W(n/2)+1);
        for (int i = 1 ;i<=((n)/2)-1 ; i++)
        {
            tmp2+=W(i)*W(n-i);
        }
        return tmp1+tmp2;

    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0302, 2024-11-02 11:32:30, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {
    if (k==0)
    {
        return 1;
    }
    else if (k>n)
    {
        return 0;
    }
    else if(k>1&&k<=n)
    {
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {         // Schroder Number
    if (n==0)
    {
        return 1;
    }
    if (n==1)
    {
        return 2;
    }
    else if (n>=2)
    {
        long long tmp =0;
        for (int i = 1 ; i <=n-2 ; i++)
        {
            tmp+=(S(i)*S(n-i-1));
        }
        return 3*(S(n-1))+tmp;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0;
    else if (n==1) return 1;
    else if (n%2==1)
    {
        long long tmp=0;
        for (int i = 1 ;i<=((n+1)/2)-1 ; i++)
        {
            tmp+=W(i)*W(n-i);
        }
        return tmp;
    }
    else if (n%2==0)
    {
        long long tmp1=0;
        long long tmp2=0;
        tmp1 = (W(n/2)*(W(n/2)+1))/2;
        for (int i = 1 ;i<=(n/2)-1 ; i++)
        {
            tmp2+=W(i)*W(n-i);
        }
        return tmp1+tmp2;

    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0303, 2024-11-02 14:33:45, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    else if(k==0) return 1;
    else if(1<k && k<=n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) {         // Schroder Number
    long long ans=0;
    long long temp=0;
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2)
    {
        ans+=3*S(n-1);
        for(int k=1;k<=n-2;++k)
        {
            temp+=S(k)*S(n-k-1);
        }
    }
    ans = ans+temp;
    return ans;
}
long long W(int n) {         // Wedderburn–Etherington Number

    long long sum=0;
    long long ev=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0&&n!=0) //even
    {
        sum+=( W(n/2)*(W(n/2)+1)/2);
        for(int i=1;i<(n/2)-1;++i)
        {
            sum+=W(i)*W(n-i);
        }
    }

    else if(n%2!=0 && n!=1) //odd
    {
        for(int i=1;i<=((n+1)/2)-1;++i)
        {
            sum+=W(i)*W(n-i);
        }
    }
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0304, 2024-11-02 15:18:28, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    else if(k==0) return 1;
    else if(1<k && k<=n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) {         // Schroder Number
    long long ans=0;
    long long temp=0;
    if(n==0) return 1;
    else if(n==1) return 2;
    else if(n>=2)
    {
        ans+=3*S(n-1);
        for(int k=1;k<=n-2;++k)
        {
            temp+=S(k)*S(n-k-1);
        }
    }
    ans = ans+temp;
    return ans;
}
long long W(int n) {         // Wedderburn–Etherington Number

    long long sum=0;
    long long ev=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0) //even
    {
        sum+=( W(n/2)*(W(n/2)+1)/2);
        for(int i=1;i<=(n/2)-1;++i)
        {
            sum+=W(i)*W(n-i);
        }
    }

    else if(n%2!=0) //odd
    {
        for(int i=1;i<=((n+1)/2)-1;++i)
        {
            sum+=W(i)*W(n-i);
        }
    }
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0305, 2024-11-02 11:21:43, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) {
        return 1;
    }
    if (k > n) {
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) {
        return 1;
    }
    if (n == 1) {
        return 2;
    }
    long long int sum = 0;
    for (long long int k = 1; k <= (n-2); k++) {
        sum += ((S(k))*(S(n-k-1)));
    }
    return (3*(S(n-1))) + sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0;
    }
    if (n == 1) {
        return 1;
    }
    long long int w = 0;
    long long int sum = 0;
    if (n%2 == 1) {
        for (long long int i = 1; i <= (((n+1)/2)-1); i++) {
            sum += ((W(i))*(W(n-i)));
        }
        return sum;
    }
    if (n%2 == 0) {
        for (long long int i = 1; i <= ((n/2)-1); i++) {
            sum += ((W(i))*(W(n-i)));
        }
        w = (((W(n/2))*(W((n/2)+1)))/2) + sum;
        return w;
    }
} 
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0306, 2024-11-02 11:24:05, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) {
        return 1;
    }
    if (k > n) {
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) {
        return 1;
    }
    if (n == 1) {
        return 2;
    }
    long long int sum = 0;
    for (long long int k = 1; k <= (n-2); k++) {
        sum += ((S(k))*(S(n-k-1)));
    }
    return (3*(S(n-1))) + sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0;
    }
    if (n == 1) {
        return 1;
    }
    long long int w = 0;
    long long int sum = 0;
    if (n%2 == 1) {
        for (long long int i = 1; i <= (((n+1)/2)-1); i++) {
            sum += ((W(i))*(W(n-i)));
        }
        return sum;
    }
    if (n%2 == 0) {
        for (long long int i = 1; i <= ((n/2)-1); i++) {
            sum += ((W(i))*(W(n-i)));
        }
        w = (((W(n/2))*(W((n/2))+1))/2) + sum;
        return w;
    }
} 
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0307, 2024-11-02 09:21:52, PPPP--PPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0){
    return 1;
}else if(k>n){
    return 0;
}else{

return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}

}
long long S(int n) {         // Schroder Number
if(n==0)return 1;
if(n==1)return 2;
long long sum =0;
for(int i =1;i<=n-2;i++){
    sum+=S(i)*(n-i-1);
}
return 3*S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n==0)return 0 ;
if(n==1)return 1;
if(n%2==0){
    long long sum=0;
    for(int i =1;i<=n/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return (W(n/2)*(W(n/2)+1)/2)+sum;
}else{
    long long sum= 0;
    for(int i =1;i<=(n+1)/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return sum;
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0308, 2024-11-02 09:25:33, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0){
    return 1;
}else if(k>n){
    return 0;
}else{

return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}

}
long long S(int n) {         // Schroder Number
if(n==0)return 1;
if(n==1)return 2;
long long sum =0;
for(long i =1;i<=n-2;i++){
    sum+=S(i)*S(n-i-1);
}
return (3*S(n-1))+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n==0)return 0 ;
if(n==1)return 1;
if(n%2==0){
    long long sum=0;
    for(int i =1;i<=n/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return (W(n/2)*(W(n/2)+1)/2)+sum;
}else{
    long long sum= 0;
    for(int i =1;i<=(n+1)/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return sum;
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0309, 2024-11-02 09:23:02, TT-PPPPPP- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
   if (n > k)
   {
    return 0 ;
   } else if (k == 0)
   {
    return 1;
   }
   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
   
    

}
long long S(int n) {        
    if (n == 0 )
    {
        return 1;
    } else if (n==1)
    {
       return 2;
    }
     long long sum = 0 ;
    for (int i = 1; i <= n-2; ++i)
    {
        sum += S(i)*S(n-i-1);
    }
    
    return 3*S(n-1) + sum;
    
    


}
long long W(int n) {        
    if (n == 0 )
    {
        return 0;
    } else if (n == 1)
    {
        return 1;
    }
    long long  sum = 0 ;
    if ( n%2  == 0)
    { 
        for (int i = 1; i <= (n/2) -1 ; ++i)
        {
            sum+= W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 +sum;

        
    } 
    for (int i = 1; i <=  ((n+1)/2) -1 ;  ++i)
    {
        sum += W(i)*W(n-i);
    }
    
    
    return sum;
    
    
    


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0310, 2024-11-02 09:25:08, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
   if (k > n)
   {
    return 0 ;
   } else if (k == 0)
   {
    return 1;
   }
   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
   
    

}
long long S(int n) {        
    if (n == 0 )
    {
        return 1;
    } else if (n==1)
    {
       return 2;
    }
     long long sum = 0 ;
    for (int i = 1; i <= n-2; ++i)
    {
        sum += S(i)*S(n-i-1);
    }
    
    return 3*S(n-1) + sum;
    
    


}
long long W(int n) {        
    if (n == 0 )
    {
        return 0;
    } else if (n == 1)
    {
        return 1;
    }
    long long  sum = 0 ;
    if ( n%2  == 0)
    { 
        for (int i = 1; i <= (n/2) -1 ; ++i)
        {
            sum+= W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 +sum;

        
    } 
    for (int i = 1; i <=  ((n+1)/2) -1 ;  ++i)
    {
        sum += W(i)*W(n-i);
    }
    
    
    return sum;
    
    
    


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0311, 2024-11-02 09:26:29, PPPPPPP--- (70%)

//BossPaul
#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){return 1;}
    if(k>n){return 0;}
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    long long sum=0;
    for(int i=1;i<=n-2;i++){
        sum+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==0){
        long long sum=0;
        for(int i=1;i<(n/2-1);i++){
            sum+=(W(i)*W(n-i));
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }else{
        long long sum=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0312, 2024-11-02 09:28:40, PPPPPPPPPP (100%)

//BossPaul
#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){return 1;}
    if(k>n){return 0;}
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    long long sum=0;
    for(int i=1;i<=n-2;i++){
        sum+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==0){
        long long sum=0;
        for(int i=1;i<=(n/2-1);i++){
            sum+=(W(i)*W(n-i));
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }else{
        long long sum=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0313, 2024-11-02 09:28:22, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;

    long long s = 0;
    for(int k=1;k<=n-2;k++){
        s += S(k)*S(n-k-1);
    }

    return 3*S(n-1)+s;
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    
    if(n%2 == 1){ // odd
        long long w = 0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            w += W(i)*W(n-i);
        }
        return w;
    }else{ // even
        long long w = 0;
        for(int i=1;i<=(n/2)-1;i++){
            w += W(i)*W(n-i);
        }
        return ((W(n/2)*W((n/2)+1))/2)+w;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0314, 2024-11-02 11:39:59, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;

    long long s = 0;
    for(int k=1;k<=n-2;k++){
        s += S(k)*S(n-k-1);
    }

    return 3*S(n-1)+s;
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    
    if(n%2 == 1){ // odd
        long long w = 0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            w += W(i)*W(n-i);
        }
        return w;
    }else{ // even
        long long w = 0;
        for(int i=1;i<=(n/2)-1;i++){
            w += W(i)*W(n-i);
        }
        return ((W(n/2)*(W((n/2))+1))/2)+w;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0315, 2024-11-02 09:26:57, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k>n){
        return 0;
    }
    else if(k == 0){
        return 1;
    }
    else if(1 < k && k <= n ){
       return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
    
}
long long S(int n) { // Schroder Number 
    if(n==1){
        return 2;
    }
    else if(n == 0){
        return 1;
    }
    else if(n >= 2){
        int sum = 0;
        for(int i = 1;i<=n-2;i++ ){
            sum += S(i)*S(n-i-1);
        }
        return 3*S(n-1) + sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    else if(n == 1){
        return 1;
    }
    else if(n % 2 == 0){
        int sum = 0;
        for(int i = 1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return ( (W(n/2)* W((n/2)+1))/2 ) + sum;
    }
    else if(n % 2 != 0){
        int sum = 0;
        for(int i = 1;i<=((n+1)/2)-1;i++){
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0316, 2024-11-02 11:04:50, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k>n){
        return 0;
    }
    else if(k == 0){
        return 1;
    }
    else if(1 < k && k <= n ){
       return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
    
}
long long S(int n) { // Schroder Number 
    if(n==1){
        return 2;
    }
    else if(n == 0){
        return 1;
    }
    else if(n >= 2){
        int sum = 0;
        for(int i = 1;i<=n-2;i++ ){
            sum += S(i)*S(n-i-1);
        }
        return 3*S(n-1) + sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    else if(n == 1){
        return 1;
    }
    else if((n % 2) == 0){
        int sum = 0;
        for(int i = 1;i<=(n/2)-1;i++){
            sum += W(i)*W(n-i);
        }
        return ( (W(n/2)* (W(n/2)+1))/2 ) + sum;
    }
    else{
        int sum = 0;
        for(int i = 1;i <= ((n+1)/2)-1;i++){
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0317, 2024-11-02 12:48:28, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle

    if (k==0)
        return 1;
    else if (k>n)
        return 0;
    else{
        return(T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }       
}
long long S(int n) {         // Schroder Number
    if (n==0)
        return 1;
    else if (n==1)
        return 2;
    else{
        long long result =0;
        result+=3*S(n-1);
        for (int k=1; k<= n-2; k++){ //check if its < or <=
            result += S(k)*S(n-k-1);
        }
        return result;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    long long result =0;
    if (n==0)
        return 0;
    else if (n==1)
        return 1;
    else if (n%2 ==0) // if even
    { 
        result += (W(n/2) * (W(n/2)+1)) / 2;
        for (int i=1; i<= (n/2)-1; i++){
            result +=(W(i)*W(n-i));
        }
        return result;
    }
    else //if odd
    {
        for (int i =0; i<= ((n+1)/2)-1; i++){
         result += W(i)*W(n-i);   
        }
        return result;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0318, 2024-11-02 12:54:29, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle

    if (k==0)
        return 1;
    else if (k>n)
        return 0;
    else{
        return(T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }       
}
long long S(int n) {         // Schroder Number
    if (n==0)
        return 1;
    else if (n==1)
        return 2;
    else{
        long long result =0;
        result+=3*S(n-1);
        for (int k=1; k<= n-2; k++){ //check if its < or <=
            result += S(k)*S(n-k-1);
        }
        return result;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0)
        return 0;
    else if (n==1)
        return 1;
    else if (n%2 == 0) // if even
    { 

        long long result = 0;
        result += (W(n/2) * (W(n/2)+1)) / 2;
        for (int i=1; i <= ((n/2)-1); i++){
            result +=(W(i)*W(n-i));
        }
        return result;
    }
    else if (n%2 != 0) //if odd
    {
        long long result = 0;
        for (int i =1; i<= (((n+1)/2)-1); i++){
         result += W(i)*W(n-i);   
        }
        return result;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0319, 2024-11-02 12:54:25, PPPPPPPxxx (70%)

#include <bits/stdc++.h>
#define endl "\n"
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    else{
        long long result=0;
        for(int k=1;k<=n-2;k++){
            result+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+result;
    }
}
long long W(int n) {
    long long result =0;
    if(n==0) return 0;
    if(n==1) return 1;
    else if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            result+=(W(i)*W(n-i));
        }
        return (W(n/2)*W(n/2+1)/2)+result;
    }
    else if(n%2!=0){
        for(int i=1;i<=(n+1)/2-1;i++){
            result+=(W(i)*W(n-i));
        }
        return result;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0320, 2024-11-02 15:12:42, PPPPPPPPPP (100%)

#include <bits/stdc++.h>
#define endl "\n"
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    else{
        long long result=0;
        for(int k=1;k<=n-2;k++){
            result+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+result;
    }
}
long long W(int n) {
    long long result =0;
    if(n==0) return 0;
    if(n==1) return 1;
    else if(n%2==0){
        for(int i=1;i<=n/2-1;i++){
            result+=(W(i)*W(n-i));
        }
        return (W(n/2)*(W(n/2)+1)/2)+result;
    }
    else if(n%2!=0){
        for(int i=1;i<=(n+1)/2-1;i++){
            result+=(W(i)*W(n-i));
        }
        return result;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0321, 2024-11-02 12:52:44, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    long long result = 0 ;       // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    else {
        for(int i = 1 ; i <= n-2 ; ++i){
            result += S(i)*S(n-i-1);
        }
    }
    return 3*S(n-1) + result ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    long long result_odd = 0;
    long long result_even = 0;
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 1){
        for(int i = 1 ; i <= (n+1)/2 -1 ; ++i){
        result_odd += W(i)*W(n-i);
    }
    }
    if(n % 2 == 0){
        for(int i = 1 ; i <= n/2 -1 ; ++i){
        result_even += W(i)*W(n-i);
    }
    }
    if(n % 2 == 1) return result_odd;
    if(n % 2 == 0) return (W(n/2)*W(n/2 +1))/2 + result_even;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0322, 2024-11-02 15:31:38, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    long long result = 0 ;       // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    else {
        for(int i = 1 ; i <= n-2 ; ++i){
            result += S(i)*S(n-i-1);
        }
    }
    return 3*S(n-1) + result ;
}
long long W(int n) {         // Wedderburn–Etherington Number
    long long result_odd = 0;
    long long result_even = 0;
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n == 2) return (W(n/2)*(W(n/2) +1))/2;
    if(n % 2 == 0){
        for(int i = 1 ; i <= (n/2)-1 ; ++i){
        result_even += W(i)*W(n-i);
    }
    }
    if(n % 2 == 1){
        for(int i = 1 ; i <= ((n+1)/2)-1 ; ++i){
        result_odd += W(i)*W(n-i);
    }
    }
    
    if(n % 2 == 0) return (W(n/2)*(W(n/2) +1))/2 + result_even;
    if(n % 2 == 1) return result_odd;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;

}

# 0323, 2024-11-02 09:25:34, PPPPPPPxxx (70%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    long long sum = 0;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        for(int k = 1 ; k <= n-2 ; k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }
}
long long W(int n) {
    long long sum = 0;
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0&&n>=2){
        for(int i = 1 ; i <= (n/2)-1 ; i++){
            sum += W(i)*W(n-i);
        }
        return (W(n/2)*W(n/2+1))/2+sum;
    }else if(n%2!=0&&n>=3){
        for(int i = 1 ; i <= ((n+1)/2)-1 ; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0324, 2024-11-02 11:57:10, PPPPPPPPPP (100%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) {
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    long long sum = 0;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        for(int k = 1 ; k <= n-2 ; k++){
        sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }
}
long long W(int n) {
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        long long sum = 0;
        for(int i = 1 ; i <= (n/2)-1 ; i++){
            sum += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }else if(n%2!=0){
        long long sum = 0;
        for(int i = 1 ; i <= ((n+1)/2)-1 ; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0325, 2024-11-02 12:49:04, xxxPPPPPPx (60%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k <= n ){
         return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if(k > n ){
        return 0;
    }
    if(k==0)return 1 ;
}
long long S(int n) { // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum = 0 ;

    sum += 3 * S(n-1);
    for(int i = 1 ; i <= n-2 ;++i){
        sum += (S(i)*S(n-i-1)) ;
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long sum = 0  ;
        sum += (W(n/2)*(W(n/2)+1))/2;
        for(int i = 1 ; i <(n/2) ; ++i){
            sum += (W(i)*W(n-i));
        }
        return sum;
    }else{
        long long sum2 = 0  ;
        for(int i = 1 ; i <((n+1)/2) ; ++i){
            sum2 += (W(i)*W(n-i));
        }
        return sum2;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0326, 2024-11-02 12:51:12, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n ){
        return 0;
    }
    if(k==0)return 1 ;
    if(k <= n ){
         return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum = 0 ;

    sum += 3 * S(n-1);
    for(int i = 1 ; i <= n-2 ;++i){
        sum += (S(i)*S(n-i-1)) ;
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long sum = 0  ;
        sum += (W(n/2)*(W(n/2)+1))/2;
        for(int i = 1 ; i <(n/2) ; ++i){
            sum += (W(i)*W(n-i));
        }
        return sum;
    }else{
        long long sum2 = 0  ;
        for(int i = 1 ; i <((n+1)/2) ; ++i){
            sum2 += (W(i)*W(n-i));
        }
        return sum2;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0327, 2024-11-02 12:52:34, Compilation error (0%)

 sumo=0;
    for(int i=1;i<=((n+1)/2)-1;i++){
        sumo+=W(i)*W(n-i);
    }
    return sumo;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0328, 2024-11-02 12:52:47, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0) return 1;
if(k>n) return 0;
if(k>=1)
return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
long long sum=0;
if(n==0) return 1;
if(n==1) return 2;
for(int i=1;i<=n-2;i++){
    sum+=S(i)*S(n-i-1);
}
return (3*S(n-1))+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0) return 0;
if(n==1) return 1;
if(n%2==0){
long long sum=0;
for(int i=1;i<=(n/2)-1;i++){
    sum+=W(i)*W(n-i);
}
return ((W(n/2)*(W(n/2)+1))/2)+sum;
}else{
    long long sumo=0;
    for(int i=1;i<=((n+1)/2)-1;i++){
        sumo+=W(i)*W(n-i);
    }
    return sumo;
}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0329, 2024-11-02 12:51:46, P--PPPPPP- (70%)

#include<iostream>

using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if (k==0)return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1) +T(n-1,k)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n==0)return 1;
    if(n==1) return 2;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum+= S(k)* S(n-k-1);
    }
    return(3*S(n-1)) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0 | n==1) return n;
    long long sum=0;
    if(n%2==1){
        for(int i=1;i<=(n+1)/2 -1 ; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    else{
        for(int i=1;i<=n/2-1 ;i++) sum+=W(i)*W(n-i);
        return (W(n/2) * ( W(n/2) +1))/2 + sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0330, 2024-11-02 12:53:10, PPPPPPPPPP (100%)

#include<iostream>

using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if (k==0)return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1) +T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n==0)return 1;
    if(n==1) return 2;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum+= S(k)* S(n-k-1);
    }
    return(3*S(n-1)) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0 | n==1) return n;
    long long sum=0;
    if(n%2==1){
        for(int i=1;i<=(n+1)/2 -1 ; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    else{
        for(int i=1;i<=n/2-1 ;i++) sum+=W(i)*W(n-i);
        return (W(n/2) * ( W(n/2) +1))/2 + sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0331, 2024-11-02 13:28:08, PPPPPPPx-x (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0 && n >= 0) return 1;
    if(k > n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);

}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    long long sum = 0;
    for(int i = 1; i <= n-2; i++) {
        sum += S(i)*S(n-i-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    long long sum = 0;
    long long A = 0;
    if(n % 2 == 0) {
        for(int i = 1; i <= int(n/2)-1; i++) {
            sum += W(i)*W(n-i);
        }
        A = (W(n/2) * W((n/2)+1))/2;
        A += sum;
    }
    // else{
    //     for(int i = 1; i <= int((n+1)/2)-1; i++) {
    //         sum += W(i)*W(n-i);
    //     }
    //     A = sum;
    // }
    return A;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
                cin >> p2;
                cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
            } else if (fn == "S") {
                cout << fn << '(' << p1 << ") = " << S(p1) << endl;
            } else if (fn == "W") {
                cout << fn << '(' << p1 << ") = " << W(p1) << endl;
            }
    }
    return 0;
}
# 0332, 2024-11-02 14:19:50, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0 && n >= 0) return 1;
    if(k > n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);

}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    long long sum = 0;
    for(int i = 1; i <= n-2; i++) {
        sum += S(i)*S(n-i-1);
    }
    return 3*S(n-1) + sum;
}
long long W(long long n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    long long A = 0;
    if(n % 2 == 1){
        long long sum = 0;
        for(int i = 1; i <= int((n+1)/2)-1; i++) {
            sum += W(i)*W(n-i);
        }
        A = sum;
        return A;
    }
    if(n % 2 == 0) {
        long long sum = 0;
        for(long long i = 1; i <= n/2-1; i++) {
            sum += W(i)*W(n-i);
        }
        A = W(n/2);
        A *= W(n/2)+1;
        A /= 2;
        return A + sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
                cin >> p2;
                cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
            } else if (fn == "S") {
                cout << fn << '(' << p1 << ") = " << S(p1) << endl;
            } else if (fn == "W") {
                cout << fn << '(' << p1 << ") = " << W(p1) << endl;
            }
    }
    return 0;
}

# 0333, 2024-11-02 10:06:46, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long b=0;
long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if(k==0) return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long a=0;
    for(int i{1} ; i<=n-2 ; i++){
        a += S(i)*S(n-i-1);
    }
    return 3*S(n-1) + a;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0){
        for(int i{1} ; i<=(n/2)-1 ; i++){
            b += W(i)*W(n-i);
        }
        return ((W(n/2)*((W(n/2))+1))/2) +b;
    }else{
        for(int i{1} ; i<=((n+1)/2)-1 ; i++){
            b += W(i)*W(n-i);
        }
        return b;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0334, 2024-11-02 10:08:40, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if(k==0) return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long a=0;
    for(int i{1} ; i<=n-2 ; i++){
        a += S(i)*S(n-i-1);
    }
    return 3*S(n-1) + a;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    long long b=0;
    if(n>=2 && n%2 == 0){
        for(int i{1} ; i<=(n/2)-1 ; i++){
            b += W(i)*W(n-i);
        }
        return ((W(n/2)*((W(n/2))+1))/2) +b;
    }
    if(n>=3 && n%2 == 1){
        for(int i{1} ; i<=((n+1)/2)-1 ; i++){
            b += W(i)*W(n-i);
        }
        return b;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0335, 2024-11-02 11:28:52, PPP-PPPPPP (90%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if( k > n) {
        return 0 ;
    }
    if( k == 0 ){
        return 1 ;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) { // Schroder Number
    if( n == 0 ){
        return 0 ;
    }
    if( n == 1 ){
        return 2 ;
    }
    int total = 0 ;
    for( int i = 1 ; i <= n-2 ;i++ ){
        total += S(i)*S(n-i-1) ;
    } 
    return 3*S(n-1) + total ;

}
long long W(int n) { // Wedderburn–Etherington Number
    if( n == 0 ){
        return 0 ;
    }
    if( n == 1 )
    {
        return 1 ;
    }

    if( n % 2 == 0 ){
        int total = 0;
        for( int i = 1 ; i <= n/2-1 ; i++ ){
            total += W(i) * W(n-i) ;
        }
        return W(n/2)*(W(n/2) +1 )/2 + total ;
    }else{
        int total = 0 ;
        for( int i  = 1 ; i <= (n+1)/2 - 1 ; i++){
            total += W(i)*W(n-i);
        }
        return total ;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0336, 2024-11-02 11:30:20, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if( k > n) {
        return 0 ;
    }
    if( k == 0 ){
        return 1 ;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}
long long S(int n) { // Schroder Number
    if( n == 0 ){
        return 1 ;
    }
    if( n == 1 ){
        return 2 ;
    }
    int total = 0 ;
    for( int i = 1 ; i <= n-2 ;i++ ){
        total += S(i)*S(n-i-1) ;
    } 
    return 3*S(n-1) + total ;

}
long long W(int n) { // Wedderburn–Etherington Number
    if( n == 0 ){
        return 0 ;
    }
    if( n == 1 )
    {
        return 1 ;
    }

    if( n % 2 == 0 ){
        int total = 0;
        for( int i = 1 ; i <= n/2-1 ; i++ ){
            total += W(i) * W(n-i) ;
        }
        return W(n/2)*(W(n/2) +1 )/2 + total ;
    }else{
        int total = 0 ;
        for( int i  = 1 ; i <= (n+1)/2 - 1 ; i++){
            total += W(i)*W(n-i);
        }
        return total ;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0337, 2024-11-02 12:48:40, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    else if(k>n) return 0;
    return (T(n,k-1) + T(n-1,k-1) + T(n-1,k));
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    long long  sum =3*S(n-1);
    for(int k=1;k<n-1;k++)
    {
        sum +=  S(k)*S(n-k-1); 
    }
    return sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;

    if(n%2 ==0)
    {

    }
    else if(n%2 != 0)
    {

    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0338, 2024-11-02 12:53:43, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    else if(k>n) return 0;
    return (T(n,k-1) + T(n-1,k-1) + T(n-1,k));
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    long long  sum =3*S(n-1);
    for(int k=1;k<n-1;k++)
    {
        sum +=  S(k)*S(n-k-1); 
    }
    return sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    long long  w;
   
    if(n%2 ==0)
    {
        w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<n/2;i++)
        {
            w+= W(i)*W(n-i);
        }
    }
    else if(n%2 != 0)
    {
        w=0;
        for(int i=1;i<(n+1)/2;i++)
        {
            w += W(i)*W(n-i);
        }
    }
    return w;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0339, 2024-11-02 12:47:15, PPPPPP-PPP (90%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    long long result = 0;
    if (n == 0) return 1;
    if (n == 1) return 2;
    for (int k = 1; k <= n-2; k++) {
        result += (S(k)*S(n-k-1));
    }
    return 3*S(n-1) + result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    long long r1 = 0, r2 = 0;
    if (n == 0) return 1;
    if (n == 1) return 1;
    if (n % 2 == 0) {
        int m = n/2;
        for (int i = 1; i <= m-1; i++) {
            r1 += (W(i)*W(n-i));
        }
        return (W(m)*(W(m)+1)/2) + r1;
    }
    int p = ((n+1) / 2) -1;
    for (int i = 1; i <= p; i++) {
        r2 += (W(i)*W(n-i));
    }
    return r2;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0340, 2024-11-02 12:48:14, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    long long result = 0;
    if (n == 0) return 1;
    if (n == 1) return 2;
    for (int k = 1; k <= n-2; k++) {
        result += (S(k)*S(n-k-1));
    }
    return 3*S(n-1) + result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    long long r1 = 0, r2 = 0;
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n % 2 == 0) {
        int m = n/2;
        for (int i = 1; i <= m-1; i++) {
            r1 += (W(i)*W(n-i));
        }
        return (W(m)*(W(m)+1)/2) + r1;
    }
    int p = ((n+1) / 2) -1;
    for (int i = 1; i <= p; i++) {
        r2 += (W(i)*W(n-i));
    }
    return r2;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0341, 2024-11-02 12:45:07, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k>n)return 0;
    else if(k==0)return 1;
    else{
        return T(n,k-1)+T((n-1),(k-1))+T((n-1),k);
    }
}
long long S(int n) { // Schroder Number

    if(n==0)return 1;
    else if(n==1)return 2;
    else{
        long long re=3*S(n-1);
        for (int i = 1; i < n-1; i++)
        {
            re+=S(i)*S(n-i-1);
        }
        return re;
        
    }

}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0)return 0;
    else if(n==1)return 1;
    else if(n%2==0)
    {
        long long re=(W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<=(n/2)-1;i++)
        {
            re+=W(i)*W(n-i);
        }
    }
    else{
        long long re=0;
        for(int i=1;i<=((n+1)/2)-1;i++)
        {
            re+=W(i)*W(n-i);
        }
    }


}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0342, 2024-11-02 12:47:40, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k>n)return 0;
    else if(k==0)return 1;
    else{
        return T(n,k-1)+T((n-1),(k-1))+T((n-1),k);
    }
}
long long S(int n) { // Schroder Number

    if(n==0)return 1;
    else if(n==1)return 2;
    else{
        long long re=3*S(n-1);
        for (int i = 1; i < n-1; i++)
        {
            re+=S(i)*S(n-i-1);
        }
        return re;
        
    }

}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0)return 0;
    else if(n==1)return 1;
    else if(n%2==0)
    {
        long long re=(W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<=(n/2)-1;i++)
        {
            re+=W(i)*W(n-i);
        }
        return re;
    }
    else if(n%2!=0){
        long long re=0;
        for(int i=1;i<=((n+1)/2)-1;i++)
        {
            re+=W(i)*W(n-i);
        }
        return re;
    }


}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0343, 2024-11-02 09:31:09, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n)
    {
        return 0;
    }
    else if(k==0)
    {
        return 1;
    }
    else
    {
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }


}
long long S(int n) {         // Schroder Number
    long long a=0;
    if(n==0)
    {
        return 1;
    }
    else if(n==1)
    {
        return 2;
    }
    else
    {
        for(int k=1;k<=n-2;k++)
        {
            a+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+a;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    long long a=0;
    if(n==0)
    {
        return 0;
    }
    else if(n==1)
    {
        return 1;
    }
    else if(n%2==0)
    {
        for(int i=1;i<=(n/2)-1;i++)
        {
            a+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + a;
    }
    else if(n%2==1)
    {
        for(int i=1;i<=(n+1/2)-1;i++)
        {
            a+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + a;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0344, 2024-11-02 09:33:00, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n)
    {
        return 0;
    }
    else if(k==0)
    {
        return 1;
    }
    else
    {
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }


}
long long S(int n) {         // Schroder Number
    long long a=0;
    if(n==0)
    {
        return 1;
    }
    else if(n==1)
    {
        return 2;
    }
    else
    {
        for(int k=1;k<=n-2;k++)
        {
            a+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+a;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    long long a=0;
    if(n==0)
    {
        return 0;
    }
    else if(n==1)
    {
        return 1;
    }
    else if(n%2==0)
    {
        for(int i=1;i<=(n/2)-1;i++)
        {
            a+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + a;
    }
    else if(n%2==1)
    {
        for(int i=1;i<=((n+1)/2)-1;i++)
        {
            a+=W(i)*W(n-i);
        }
        return a;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0345, 2024-11-02 15:13:34, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if(k==0){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n, k-1) + T(n-1,k-1) + T(n-1, k);
}
long long S(int n)
{ // Schroder Number
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    long long sum = 0;
    for(int k=1; k<=n-2; ++k){
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        long long res = (W(n/2)*(W(n/2)+1))/2;
        long long sum = 0;
        for(int i=1; i<=((n/2)-1); ++i){
            sum += W(i) * W(n-i);
        }
        return res + sum;
    }
    if(n%2!=0){
        long long sum = 0;
        for(int i=1; i<=(((n+1)/2)-1); ++i){
            sum += W(i)*W(n-1);
        }
        return sum;
    }
    // return 0;
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0346, 2024-11-02 15:16:49, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if(k==0){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n, k-1) + T(n-1,k-1) + T(n-1, k);
}
long long S(int n)
{ // Schroder Number
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    long long sum = 0;
    for(int k=1; k<=n-2; ++k){
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        long long sum = 0;
        for(int i=1; i<=(n/2)-1; ++i){
            sum += W(i) * W(n-i);
        }
        return (W(n/2) * (W(n/2)+1))/2 + sum;
    }
    if(n%2!=0){
        long long sum = 0;
        for(int i=1; i<=(((n+1)/2)-1); ++i){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    // return 0;
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0347, 2024-11-02 09:24:17, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int sum=0;
    for(int k=1; k<=n-2; k++){
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    int sum1=0;
    for(int i=1; i<=(n*0.5)-1; i++){
        sum1 += W(i)*W(n-1);
    }
    if(n>1 && n%2==0) return (W(n*0.5)*(W(n*0.5)+1))*0.5 + sum1;
    int sum2=0;
    for(int i=1; i<=(n+1)/2.0 - 1; i++){
        sum2 += W(i)*W(n-i);
    }
    if(n>1 && n%2==1) return sum2;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0348, 2024-11-02 10:45:30, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int sum=0;
    for(int k=1; k<=n-2; k++){
        sum += (S(k)*S(n-k-1));
    }
    if(n>=2) return (3*S(n-1)) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    int sum1=0;
    for(int i=1; i<=(n*0.5)-1; i++){
        sum1 += (W(i)*W(n-i));
    }
    if(n>1 && n%2==0) return (W(n*0.5)*(W(n*0.5)+1))*0.5 + sum1;
    int sum2=0;
    for(int i=1; i<=(n+1)/2.0 - 1; i++){
        sum2 += (W(i)*W(n-i));
    }
    if(n>1 && n%2==1) return sum2;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0349, 2024-11-02 14:28:35, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if(k==0)
    {
        return 1;
    }
    else if(k>n)
    {
        return 0;
    }
    else
    {
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n)
{ // Schroder Number
    if(n==0)
    {
        return 1;
    }
    else if(n==1)
    {
        return 2;
    }
    else if(n>=2)
    {
        int sum=0;
        for(int k=1;k<=n-2;k++)
        {
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if(n==0)
    {
        return 0;
    }
    else if(n==1)
    {
        return 1;
    }
    else if(n%2==0)
    {
        int sum=0;
        for(int i=1;i<=n/2-1;i++)
        {
            sum+=W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2)+sum;
    }
    else
    {
        int sum=0;
        for(int i=1;i<=(n+1)/2+1;i++)
        {
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0350, 2024-11-02 14:30:36, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if(k==0)
    {
        return 1;
    }
    else if(k>n)
    {
        return 0;
    }
    else
    {
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n)
{ // Schroder Number
    if(n==0)
    {
        return 1;
    }
    else if(n==1)
    {
        return 2;
    }
    else if(n>=2)
    {
        int sum=0;
        for(int k=1;k<=n-2;k++)
        {
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if(n==0)
    {
        return 0;
    }
    else if(n==1)
    {
        return 1;
    }
    else if(n%2==0)
    {
        int sum=0;
        for(int i=1;i<=n/2-1;i++)
        {
            sum+=W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2)+sum;
    }
    else
    {
        int sum=0;
        for(int i=1;i<=(n+1)/2-1;i++)
        {
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0351, 2024-11-02 14:10:47, Compilation error (0%)

#include <iostream>

using namespace std;

long long sumS(int n) {
    long long output = 0;
    for (int i = 1; i <= n; i++) {
        output += S(i)*S(n-i-1);
    }
    return output;
}

long long sumW(int n) {
    long long output = 0;
    for (int i = 1; i <= n; i++) {
        output += W(i)*W(n-i);
    }
    return output;
}

long long T(int n, int k) {  // Schroder Triangle
if (k == 0) {return 1;}
else if (k > n) {return 0;}
else {return T(n,k-1) + T(n-1,k-1) + T(n-1,k);}
}
long long S(int n) {         // Schroder Number
if (n == 0) {return 1;}
else if (n == 1) {return 2;}
else {return (3 * S(n-1)) + sumS(n-2);}

}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) {return 0;}
else if (n==1) {return 1;}
else if (n%2==0) {return ((W(n/2)*(W(n/2)+1))/2) + sumW((n/2)-1);}
else if (n%2==1) {return sumW(((n+1)/2)-1);}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0352, 2024-11-02 14:24:45, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;
/*
long long sumS(int n) {
    long long output = 0;
    for (int i = 1; i <= n; i++) {
        output += S(i)*S(n-i-1);
    }
    return output;
}

long long sumW(int n) {
    long long output = 0;
    for (int i = 1; i <= n; i++) {
        output += W(i)*W(n-i);
    }
    return output;
} */

long long T(int n, int k) {  // Schroder Triangle
if (k == 0) {return 1;}
else if (k > n) {return 0;}
else {return T(n,k-1) + T(n-1,k-1) + T(n-1,k);}
}
long long S(int n) {         // Schroder Number
if (n == 0) {return 1;}
else if (n == 1) {return 2;}
else {
    long long output = 0;
    for (int i = 1; i <= n-2; i++) {
        output += S(i)*S(n-i-1);
    }
    return (3 * S(n-1)) + output;}
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) {return 0;}
else if (n==1) {return 1;}
else if (n%2==0) {
    long long output = 0;
    for (int i = 1; i <= (n/2)-1; i++) {
        output += W(i)*W(n-i);
    }
    return ((W(n/2)*(W(n/2)+1))/2) + output;}
else if (n%2==1) {
    long long output = 0;
    for (int i = 1; i <= ((n+1)/2)-1; i++) {
        output += W(i)*W(n-i);
    }
    return output;}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0353, 2024-11-02 09:22:56, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0)return 1;
    else if(k>n)return 0;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    else{
        long long H=0;
        for(int k=1;k<=n-2;k++) H+= S(k)*S(n-k-1);
        return 3*S(n-1)+H;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    else if(n==1) return 1;
    else{
        if(n%2 ==0) {
            long long H=0;
            for(int k=1;k<=(n/2)-1;k++) H+= W(k)*W(n-k);
            return (((W(n/2))*(W(n/2)+1))/2)+H;
        }
        else {
            long long H=0;
            for(int k=1;k<=(n/2)-1;k++) H+= W(k)*W(n-k);
            return H;
        }
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0354, 2024-11-02 09:25:59, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0)return 1;
    else if(k>n)return 0;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    else{
        long long H=0;
        for(int k=1;k<=n-2;k++) H+= S(k)*S(n-k-1);
        return 3*S(n-1)+H;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    else if(n==1) return 1;
    else{
        if(n%2 ==0) {
            long long H=0;
            for(int k=1;k<=(n/2)-1;k++) H+= W(k)*W(n-k);
            return (((W(n/2))*(W(n/2)+1))/2)+H;
        }
        else {
            long long H=0;
            for(int k=1;k<=((n+1)/2)-1;k++) H+= W(k)*W(n-k);
            return H;
        }
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0355, 2024-11-02 09:06:49, Compilation error (0%)

#
# 0356, 2024-11-02 09:28:20, PPPPPPPPPP (100%)

#include <iostream>
#include <cmath>
#include <string>
#include <algorithm>
#include <map>
#include <vector>
#include <set>
#include <tuple>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n) return 0;
    else if(k == 0) return 1;
    return T(n, k - 1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    else if(n == 1) return 2;
    int ans = 0;
    ans += 3*S(n-1);
    for(int k =1; k <= n-2; k++){
        ans += (S(k)*S(n-k-1));
    }
    return ans;
}

long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0 || n == 1) return n;
    int ans = 0;
    if(n%2 == 0){
        ans += (W(n/2) * (W(n/2) + 1))/2;
        for(int i = 1; i <= (n/2) - 1; i++){
            ans += W(i)*W(n-i);
        }
        return ans;
    }
    for(int i = 1; i <= ((n+1)/2) - 1; i++){
        ans += W(i)*W(n-i);
    }
    return ans;
}
/*
T 10 11
T 100 0
T 12 10
S 0
S 1
S 20
W 0
W 1
W 20
*/
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0357, 2024-11-02 13:37:12, PPPP--PPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    long long sum = 0;
    for(int i = 1; i <= n-2; i++){
        sum += S(i)+S(n-i-1);
    }
    return 3*S(n-1) + sum;

}
long long sigma(int n);
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    long long sum = 0;
    if( n % 2 == 0){
        long long max = 0;
        for(int i = 1; i <= (n/2)-1; i++){
            max += W(i)*W(n-i);
        }
        sum = (W(n/2)*(W(n/2)+1))/2;
        return sum + max;
    }
    long long odd = 0;
        for(int i = 1; i <= ((n+1)/2)-1; i++){
            odd += W(i)*W(n-i);
        }
    return odd;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0358, 2024-11-02 14:01:35, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    long long sum = 0;
    for(int i = 1; i <= n-2; i++){
        sum += S(i)*S(n-i-1);
    }
    return 3*S(n-1) + sum;

}
long long sigma(int n);
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    long long sum = 0;
    if( n % 2 == 0){
        long long max = 0;
        for(int i = 1; i <= (n/2)-1; i++){
            max += W(i)*W(n-i);
        }
        sum = (W(n/2)*(W(n/2)+1))/2;
        return sum + max;
    }
    long long odd = 0;
        for(int i = 1; i <= ((n+1)/2)-1; i++){
            odd += W(i)*W(n-i);
        }
    return odd;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0359, 2024-11-02 10:26:46, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle

    if (k > k && k<= n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

    else if (k > n) {
        return 0;
    }

    else if (k == 0) {
        return 1;
    }
    
}
long long S(int n) {         // Schroder Number
    if (n == 0) {
        return 1;
    }
    if (n==1) {
        return 2;
    }

    int sum = 0;
    for (int k = 1; k <= n-2;k++) {
        sum+= S(k)*S(n-k-1);
    }

    return 3*S(n-1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0;
    }
    if (n ==1 ) {
        return 1;
    }
    if (n%2 == 0) {

        int sum = 0;
        for (int i = 1; i<= n/2 - 1; i++) {
            sum+= W(i)*W(n-i);
        }

        return ((W(n/2)*(W(n/2) +1))/ 2 ) + sum;
    }

    if (n%2 == 1) {
        int sum = 0;
        for (int i = 1; i<= (n+1)/2 - 1; i++) {
            sum+= W(i)*W(n-i);
        }

        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0360, 2024-11-02 10:33:04, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) {
        return 1;
    }
    if (k > n) {
        return 0;
    }
    if (k > 1 && k<= n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    
}
long long S(int n) {         // Schroder Number
    if (n == 0) {
        return 1;
    }
    if (n==1) {
        return 2;
    }

    int sum = 0;
    for (int k = 1; k <= n-2;k++) {
        sum+= S(k)*S(n-k-1);
    }

    return 3*S(n-1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0;
    }
    if (n ==1 ) {
        return 1;
    }
    if (n%2 == 0) {

        int sum = 0;
        for (int i = 1; i<= n/2 - 1; i++) {
            sum+= W(i)*W(n-i);
        }

        return ((W(n/2)*(W(n/2) +1))/ 2 ) + sum;
    }

    if (n%2 == 1) {
        int sum = 0;
        for (int i = 1; i<= (n+1)/2 - 1; i++) {
            sum+= W(i)*W(n-i);
        }

        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0361, 2024-11-02 12:50:20, PPPPPP-PPP (90%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k>n)return 0;
    if(k==0)return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) { // Schroder Number
    if(n<=1)return n+1;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n<=1)return 1;
    if(n%2==0){
        long long sum=0;
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    //else
        long long sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;

    
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0362, 2024-11-02 12:51:33, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k>n)return 0;
    if(k==0)return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) { // Schroder Number
    if(n<=1)return n+1;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n<=1)return n;
    if(n%2==0){
        long long sum=0;
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    //else
        long long sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;

    
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0363, 2024-11-02 09:23:11, PPPPPPP--- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
if (n == 0) return 1;
if (n == 1) return 2;
long long result = 3*S(n-1);
for(int k = 1;k <= n-2;k++) result += S(k)*S(n-k-1);
return result;

}
map<int,long long> c;
long long W(int n) {         // Wedderburn–Etherington Number
if (c.find(n) != c.end()) return c[n];
if (n < 2) return n;
long long result = 0;
if (n% 2 == 0) {
    result += (W(n/2)*(W(n/2)+1))/2 ;
    for (int i = 1;i <= n-2;i++) result += W(i)*W(n-i);
}else {
    for (int i = 1;i <= (n+1)/2-1;i++) result += W(i)*W(n-i);
}
c[n] = result;
return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0364, 2024-11-02 09:25:00, PPPPPPPPPP (100%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
if (n == 0) return 1;
if (n == 1) return 2;
long long result = 3*S(n-1);
for(int k = 1;k <= n-2;k++) result += S(k)*S(n-k-1);
return result;

}
map<int,long long> c;
long long W(int n) {         // Wedderburn–Etherington Number
if (c.find(n) != c.end()) return c[n];
if (n < 2) return n;
long long result = 0;
if (n% 2 == 0) {
    result += (W(n/2) * (W(n/2)+1)) /2 ;
    for (int i = 1;i <= n/2-1;i++) result += W(i)*W(n-i);
}else {
    for (int i = 1;i <= (n+1)/2-1;i++) result += W(i)*W(n-i);
}
c[n] = result;
return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0365, 2024-11-02 09:21:19, PPPP--PPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k>n){
    return 0;
 }
 if(k==0){
    return 1;
 }

 return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
 if(n==0){
    return 1;
 }
 if(n==1){
    return 2;
 }
 long long sum =0;
 for(int k=1;k<n-1;k++){
    sum+=S(k)*S(n-k-1);
 }
 
 return 3+S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
 if(n==0){
    return 0;
 }
 if(n==1){
    return 1;
 }
 if(n%2==0){
    long long sum=0;
    for(int i=1;i<=n/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return W(n/2)*(W(n/2)+1)/2+sum;
 }else{
    long long sum=0;
    for(int i=1;i<=(n+1)/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return sum;
 }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0366, 2024-11-02 09:22:55, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
 if(k>n){
    return 0;
 }
 if(k==0){
    return 1;
 }

 return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
 if(n==0){
    return 1;
 }
 if(n==1){
    return 2;
 }
 long long sum =0;
 for(int k=1;k<n-1;k++){
    sum+=S(k)*S(n-k-1);
 }
 
 return 3*S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
 if(n==0){
    return 0;
 }
 if(n==1){
    return 1;
 }
 if(n%2==0){
    long long sum=0;
    for(int i=1;i<=n/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return W(n/2)*(W(n/2)+1)/2+sum;
 }else{
    long long sum=0;
    for(int i=1;i<=(n+1)/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    return sum;
 }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0367, 2024-11-02 09:21:45, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    // Schroder Triangle
    if(k==0){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n, k-1) + T(n-1, k-1) + T(n-1,k);
}
long long S(int n) { 
    // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    long long tmp = 3*S(n-1);
    for(int k=1; k<=n-2; k++){
        tmp += S(k) * S(n-k-1);
    }
    return tmp;
}
long long W(int n) { 
    // Wedderburn–Etherington Number
    if(n == 0 || n== 1){
        return n;
    }
    if(n%2==0){
        long long tmp = (W(n/2) * (W(n/2) + 1))/2;
        for(int i=1; i<=n/2-1; i++){
            tmp += W(i) * W(n-i);
        }
        return tmp;
    }
    if(n%2==1){
        long long tmp=0;
        for(int i=1; i<= ((n+1)/2)-1; i++){
            tmp += W(i)*W(n-i);
        }
        return tmp;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0368, 2024-11-02 09:34:51, PPPPPPPPPP (100%)

#include<bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) {
        return 1;
    }
    if(k>n) {
        return 0;
    }

    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n==0) {
        return 1;
    }
    if(n==1) {
        return 2;
    }
    if(n>=2) {
        long long sum = 0;
        for(int k=1 ; k<=n-2 ; ++k) {
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) {
        return 0;
    }
    if(n==1) {
        return 1;
    }
    if(n!=1 && n%2==1) {
        long long sum = 0;
        for(int i=1 ; i<=((n+1)/2)-1 ; ++i) {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    if(n%2==0) {
        long long sum = 0;
        for(int i=1 ; i<=(n/2)-1 ; ++i) {
            sum += W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0369, 2024-11-02 13:00:03, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}

long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;

    double sum = 0;
    if(n >= 2){
    for(int k=1; k<=n-2; k++){
        sum += S(k) * S(n-k-1);
    }
    return (3.0*S(n-1)) + sum;
    }
}

long long W(int n) {
    if(n == 0) return 0;
    if(n == 1) return 1;

    if(n >= 2 && n % 2 == 0){
        double sum=0;
        for(int i=1; i<=((n/2.0)-1.0); i++){
            sum += W(i)*W(n-i);
        }
        return (W(n/2.0) * (W(n/2.0)+1.0))/2.0 + sum;
    } else if(n >= 3 && n % 2 != 0){
        double sum =0;
        for(int i=1; i<=((n+1)/2.0)-1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}

int main() {
string fn;
int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0370, 2024-11-02 09:25:11, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(k > n){
        return 0;
    }else if(k == 0){
        return 1;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }else if(n == 1){
        return 2;
    }
    long long sum = 0;
    for(int k = 1; k <= n-2; k++){
        sum += S(k) * S(n-k-1);
    }
    return 3 * S(n-1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }else if(n == 1){
        return 1;
    }else if(n % 2 == 0){
        long long sum = 0;
        for(int i = 1; i <= (n/2 - 1); i++){
            sum += W(i) * W(n - i);
        }
        return (W(n/2) * (W(n/2) + 1))/2 + sum;
    }
    long long sum2 = 0;
    for(int i = 1; i <= (n+1)/2 - 1; i++){
        sum2 += W(i) * W(n-i);
    }
    return sum2;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0371, 2024-11-02 12:47:15, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    if(k>1)return T(n,k-1) + T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum=0;
    for(int k=1;k<=n-2;++k){
        sum += (S(k)*S(n-k-1));
    }
    return 3*S(n-1) +sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long asum=0;
        for(int i=1;i<=(n/2.0)-1;++i){
            asum += (W(i)*W(n-i));
        }
        return (W(n/2.0)*(W(n/2.0)+1))/2.0 + asum; 
    }
    if(n%2!=0){
        long long osum=0;
        for(int i=1;i<=((n+1)/2.0)-1;++i){
            osum += (W(i)*W(n-i));
        }
        return osum; 
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0372, 2024-11-02 12:48:58, PPPPPPPPPP (100%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if(k==0)return 1;
    return T(n,k-1)+T(n-1,k-1)+ T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long temp=0;
    for (int k = 1; k <= n-2; k++)
    {
        temp+=(S(k)*S(n-k-1));
    }
    return 3*S(n-1)+temp;
    

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==1){
        long long temp =0;
        for(int i=1;i<=(n+1)/2 - 1;i++){
            temp+= W(i)*W(n-i);
        }
        return temp;
    }
    else{
        long long temp =0;
        for(int i=1;i<=n/2 -1;i++){
            temp+= W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2 + temp;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0373, 2024-11-02 12:45:15, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n) return 0;
    else if(k==0) return 1;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {
    if(n==0) return 1;
    else if(n==1) return 2;
    long long x=0;
    for(int i=1;i<=n-2;i++){
        x+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+x;
}
long long W(int n) {
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0){
        long long x=0;
        for(int i=1;i<=(n/2)-1;i++){
            x+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2+x;
    }
    else{
        long long x=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            x+=W(i)*W(n-i);
        }
        return x;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
//BossPaul
}

# 0374, 2024-11-02 12:55:40, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) {
        return 1;
    }
    if (k > n) {
        return 0;
    }
    if (1 < k && k <= n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) {         // Schroder Number
    if (n == 0) {
        return 1;
    } 
    if (n == 1) {
        return 2;
    }
    int result = 3*S(n-1);
    for (int k=1; k <= n-2; ++k) {
        result += S(k) * S(n-k-1);
    }
    return result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0 || n == 1){
        return n;
    }
    int sum  = (W(n/2)*(W(n/2)+1))/2;
    for (int i=1; i<= (n/2)-1; i++){
        sum += W(i)*W(n-i);
    }
    if (n%2 == 0) return sum;
    int total = 0;
    for (int i=1; i<= ((n+1)/2)-1; i++){
        total += W(i)*W(n-i);
    }
    if (n%2 == 1) return total;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0375, 2024-11-02 11:06:00, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n){
        return 0;
    } else if (k == 0){
        return 1;
    } else {
        return T(n, k-1) + T(n-1,k-1) + T(n-1, k);
    }
}
long long S(int n) { // Schroder Number
    if (n == 0){
        return 1;
    } else if (n == 1){
        return 2;
    } else {
        int sum = 0;
        for (int i = 1; i < (n-2)+1; i++)
        {
            sum += (S(i)) * (S(n-i-1));
        }
        
        return (3 * S(n-1)) + sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    } else if (n == 1){
        return 1;
    } else if (n % 2 == 0){
        int sum1 = 0;
        for (int i = 1; i < n/2-1+1; i++)
        {
            sum1 += W(i) * W(n-i);
        }
        return (W(n/2) * (W(n/2) + 1)) / 2 + sum1;
        
    } else {
        int sum2 = 0;
        for (int i = 1; i < (n+1)/2 - 1+1; i++)
        {
            sum2 += W(i) * W(n-i);
        }
        return sum2;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0376, 2024-11-02 12:48:49, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0){
        return 1;
    }
    else if(k>n){
        return 0;
    }
    else{
        return T(n, k-1)+T(n-1, k-1)+T(n-1,k);
    }
}
long long S(int n) { // Schroder Number    
    long long total=0;
    if(n==0) return 1;
    else if(n==1) return 2;
    else{
        for(int k=1; k<=n-2; k++){
            total+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+total;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    long long total1=0, total2=0;
    if(n<=1){
        return n;
    }
    else if(n%2==0){
        for(int i=1; i<=(n/2)-1; i++){
            total1+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 +total1;
    }
    else if(n%2!=0){
        for(int i=1; i<=((n+1)/2)-1; i++){
            total2+=W(i)*W(n-i);
        }
        return total2;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0377, 2024-11-02 09:22:16, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n) return 0;
    else if(k == 0) return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    else if(n == 1) return 2;
    long long sum = 0;
    for(int k = 1; k <= n-2; ++k) {
        sum += (S(k)*S(n-k-1));
    }
    return 3*S(n-1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0 || n == 1) return n;
    if(n%2 == 0) {
        long long sum1 = 0;
        for(int i = 1; i <= (n/2)-1; ++i) {
            sum1 += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum1;
    } else {
        long long sum2 = 0;
        for(int i = 1; i <= ((n+1)/2)-1; ++i) {
            sum2 += W(i)*W(n-i);
        }
        return sum2;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0378, 2024-11-02 13:31:38, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         
    // Schroder Number s20 17518619320890
    if(n==0) return 1;
    if(n==1) return 2;
    long long int sum=0; int nn=n-2;
    for(int k=1;k<=nn;k++){
        sum+=(S(k)*S(n-k-1));
    }
    return 3*S(n-1)+sum;

}
long long W(int n) {         
    // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        //even
        long long int sum=0;
        for(int i=1;i<=(n/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2)+sum;
    }
    else {
        //odd
        long long int sum=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0379, 2024-11-02 12:44:55, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)
        return 1;

    if (k > n)
        return 0;

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}

long long S(int n) {         // Schroder Number
    if (n == 0)
        return 1;
    
    if (n == 1)
        return 2;
    
    long long sum = 3 * S(n - 1);
    for (int k=1; k <= n-2; ++k) {
        sum += S(k) * S(n - k - 1);
    }

    return sum;
}

long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0)
        return 0;
    
    if (n == 1)
        return 1;

    if (n % 2 == 0) {
        long long result = (W(n / 2) * (W(n / 2) + 1)) / 2;
        for (int i=1; i <= n/2-1; ++i) {
            result += W(i) * W(n - i);
        }
        return result;
    }

    long long result = 0;
    for (int i=1; i <= (n+1)/2-1; ++i) {
        result += W(i) * W(n - i);
    }

    return result;
    
    

}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0380, 2024-11-02 09:30:02, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0) return 1;
if(k>n) return 0;
return(T(n,k-1)+T(n-1,k-1)+T(n-1,k));

}
long long S(int n) {         // Schroder Number
if(n==0) return 1;
if(n==1) return 2;
long long sum=0;
for(int k=1;k<=n-2;k++){
    sum+=S(k)*S(n-k-1);
}
return (3*S(n-1)+sum);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n==0) return 0;
if(n==1) return 1;
if(n%2 == 0){
long long sum=0;
for(int i=1;i<=((n)/2)-1;i++){
    sum+=W(i)*W(n-i);
}return ((W(n/2)*(W(n/2)+1)/2)+sum);
}
if(n%2==1) {
long long sum=0;
for(int i=1;i<=((n+1)/2)-1;i++){
    sum+=W(i)*W(n-i);
}return sum;
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0381, 2024-11-02 09:27:30, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle

    // Base Case
    if (k == 0) return 1 ;
    else if (k > n) return 0 ;
    
    else {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    }

}
long long S(int n) {         // Schroder Number

    // Base Case
    if (n == 0) return 1 ;
    else if (n == 1) return 2 ;

    else {
        long long acc = 0 ;
        for (long long k = 1 ; k <= n-2 ; k++) {
            acc += (S(k) *S(n-k-1)) ;
        }
        return (3*S(n-1) +acc) ;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number

    // Base Case
    if (n == 0) return 0 ;
    else if (n == 1) return 1 ;

    else {

        // even
        if (n%2 == 0) {
            long long acc = 0 ;
            long long m = (n/2)-1 ;
            for (long long i = 1 ; i <= m ; i++) {
                acc += (W(i)*W(n-i)) ;
            }
            return (W(n/2)*(W(n/2) +1))/2 + acc ;
        }
        else {

            // odd
            long long acc = 0 ;
            long long m = ((n+1)/2)-1 ;
            for (long long i = 1 ; i <= m ; i++) {
                acc += (W(i)*W(n-i)) ;
            }
            return acc ;
        }
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0382, 2024-11-02 12:47:17, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    long long sum=0;
    if(n==0) return 1;
    else if(n==1) return 2;
    sum = 3*S(n-1);
    for (int k = 1; k <= n-2; k++)
    {
        sum += (S(k)*S(n-k-1));
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    long long sumeven=0,sumodd=0;
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2 == 0)
    {
        sumeven = (W(n/2)*(W(n/2)+1))/2;
        for (int i = 1; i <= (n/2)-1; i++)
        {
            sumeven += (W(i)*W(n-i)); 
        }
        return sumeven;
    }
    else if(n%2 != 0)
    {
        for (int i = 1; i <= ((n+1)/2)-1; i++)
        {
            sumodd += W(i)*W(n-i);
        }
        return sumodd;
    } 
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0383, 2024-11-02 09:19:23, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);

}
long long S(int n) {         // Schroder Number
    if (n < 2) return n + 1;
    long long sum = 0;
    for (int k = 1; k <= n - 2; k++) {
        sum += S(k) * S(n - k - 1);
    }
    return 3 * S(n - 1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n < 2) return n;
    if (n & 1) {
        long long sum = 0;
        for (int i = 1; i <= (n + 1) / 2 - 1; i++)
            sum += W(i) * W(n - i);
        return sum;
    }
    long long sum = 0;
    for (int i = 1; i <= n / 2 - 1; i++)
        sum += W(i) * W(n - i);
    return (W(n / 2) * (W(n / 2) + 1) / 2) + sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0384, 2024-11-02 09:25:41, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k >n) return 0;
    if(1 < k && k <= n && 1 <n) return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number == complete
    if(n ==0)return 1;
    if(n == 1) return 2;
    if(n>=2){
        long long sum = 0;
        for(long long k =1;k <= n-2;++k){
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n ==0 || n == 1) return n;
    if(n %2 ==0){
        long long sum = 0;
        for(int i =1;i <= ((n/2)-1);++i) sum += W(i)*W(n-i);
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    }
    if(n %2 != 0){
        long long sum =0;
        for(int i =1;i <= ((n+1)/2)-1;++i) sum += W(i)*W(n-i);
        return sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0385, 2024-11-02 09:25:56, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0)return 1;
    else if(k > n)return 0;
    else return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n == 0)return 1;
    else if(n == 1)return 2;
    else if(n >= 2) {
        int sum = 0;
        for(int i=1;i<=(n-2);i++){
            sum += (S(i) * S(n-i-1));
        }
        return sum +  (3*S(n-1));
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)return 0;
    else if(n == 1)return 1;
    else if(n%2 == 1){
        int sum =0;
        for(int i=1;i<=((n+1)/2) - 1;i++){
            sum += W(i) * W(n-i);
        }
        return sum;
    }else{
        int sum = 0;
        for(int i=1;i<=(n/2)-1;i++){
            sum+= W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0386, 2024-11-02 13:00:09, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}

long long S(int n) { 
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum=0;
    for(long long k=1; k<=n-2; k++){
        sum+=S(k)*S(n-k-1);
    }
    return (3*S(n-1))+sum;
}


long long W(int n) {
    if(n==0) return 0;
    if(n==1) return 1;
    long long sum=0, sumb=0;
    if(n%2==0){
        for(long long i=1; i<=(n/2-1); i++){
            sum+=W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + sum; 
    }
    for(long long i=1; i<=((n+1)/2-1); i++){
        sumb+=W(i)*W(n-i);
    }
    return sumb; 
    
}




int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0387, 2024-11-02 13:30:07, PPPPPPPPPP (100%)

#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;//
    return T(n,k-1)+T(n-1,k)+T(n-1,k-1);
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum=0;
    for(int i=1;i<=n-2;i++){
        sum+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum=0;
        for(int i=1;i<=n/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2+sum;
    }
    else{
        long long sum=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0388, 2024-11-02 12:53:29, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0){
        return 1;
    }
    if (k>n){
        return 0;
    }
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    if (n==1) return 2;
    else{
        long long sum=0;
        for (long long k = 1; k<= n-2; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if (n%2==0){
        long long first = (W(n/2)*((W(n/2)+1)))/2;
        long long second =0;
        for (long long i = 1; i <= ((n/2)-1); i++){
            second += W(i)*W(n-i);
        }
        return first+second;
    }
    else{
        long long third =0;
        for (long long i = 1; i <= (((n+1)/2)-1); i++){
            third += W(i)*W(n-i);
        } 
        return third;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
    if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
    return 0;
}

# 0389, 2024-11-02 09:42:21, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle

    if(k > n) return 0 ;
    if(k == 0) return 1 ;
    
    if(1 <= k && k <= n) return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k) ;

}
long long S(int n) {         // Schroder Number

    if(n == 0) return 1 ;
    if(n == 1) return 2 ;

    long long sum = 0 ;

    for(long long k = 1 ; k <= n - 2 ; k++) {
        sum += S(k) * S(n - k - 1) ;
    }

    if(n >= 2) return 3 * S(n - 1) + sum ;
}
long long W(int n) {         // Wedderburn–Etherington Number

    if(n == 0) return 0 ;
    if(n == 1) return 1 ;

    long long sum = 0 ;
    for(long long i = 1 ; i <= (n / 2) - 1 ; i++) {
        sum += W(i) * W(n - i) ;
    }

    if(n > 1 && n % 2 == 0) return ((W(n / 2) * (W(n / 2) + 1)) / 2) + sum ;

    long long sum2 = 0 ;
    for(long long i = 1 ; i <= ((n + 1) / 2) - 1 ; i++) {
        sum2 += W(i) * W(n - i) ;
    }

    if(n > 1 && n % 2 == 1) return sum2 ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0390, 2024-11-02 09:24:40, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
     // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(k > 1 && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long x = 0;
        for(int i = 1; i <= (n-2); i++){
            x += S(i)*S(n-i-1);
        }
        return (3*S(n-1) + x);
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 0){
        long long x = 0;
        for(int i = 1; i<=((n/2)-1); i++){
            x += W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2)+x;
    }else{
        long long y = 0;
        for(int i = 1; i<=((n+1)/2)-1; i++){
            y += W(i)*W(n-i);
        }
        return y;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0391, 2024-11-02 09:33:00, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){ return 1; }
    if(k > n){ return 0; }

    return T(n, k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0 || n == 1){ return n+1; }

    long long sum = 0;
    for(int k=1; k<=n-2; k++){
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;
}

long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0 || n == 1){ return n; }
    if(n&1){
        long long sum = 0;
        int upper = (n+1)/2 - 1;
        for(int i=1; i<=upper; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    long long sum = 0;
    int upper = n/2-1;
    for(int i=1; i<=upper; i++){
        sum += W(i)*W(n-i);
    }
    return (W(n/2)*(W(n/2)+1))/2 + sum;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0392, 2024-11-02 10:16:45, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k > n)
    {
        return 0;
    }
    if(k == 0)
    {
        return 1;
    }
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);

}
long long S(int n) { // Schroder Number
    if(n == 0)return 1;
    if(n == 1)return 2;
    long long t = 0;
    for(int i = 1; i <= n - 2; i++)
    {
        t += S(i)*S(n-i-1);
    }
    return 3*(S(n - 1)) + t;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 0)
    {
        long long t = 0;
        for(int i = 1; i <= (n/2) - 1; i++)
        {
            t += W(i) *W (n - i);
        }
        return ((W(n/2) * (W((n/2)) + 1))/2) + t;
    }
    else
    {
        long long t = 0;
        for(int i = 1; i <= ((n + 1)/2) - 1; i++)
        {
            t += W(i) *W (n - i);
        }
        return t;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0393, 2024-11-02 15:10:30, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) {
        return 0;
    }
    if (k == 0) {
        return 1;
    }
    if (1 < k <= n) {
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
    }

}
long long S(int n) {         // Schroder Number
    if (n == 0) {
        return 1;
    }
    if (n == 1) {
        return 2;
    }
    if (n >= 2) {
        int sumS = 0;
        for (int k = 1; k <=  n - 2; k++) {
            sumS += (S(k) * S(n-k-1));
        }
        return 3*(S(n-1)) + sumS;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0;
    }
    if (n == 1) {
        return 1;
    }
    if (n % 2 == 0) {
        int sum_W_mod0 = 0;
        for (int i = 1; i <= ((n/2)-1); i++) {
            sum_W_mod0 += (W(i)*W(n-i));
        }
        return (( (W(n/2)) * ((W(n/2))+1) ) / 2) + sum_W_mod0;
    }
    if (n % 2 != 0) {
        int sum_W_mod = 0;
        for (int i = 1; i <= ((n + 1) / 2) - 1; i++) {
            sum_W_mod += (W(i)*W(n-i));
        }
        return sum_W_mod;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0394, 2024-11-02 09:19:57, PPPPPPPPPP (100%)

#include <iostream>
#include <cmath>

using namespace std;



long long T(int n, int k) {  // Schroder Triangle

    if(k == 0)

        return 1;

    else if(k > n)

        return 0;

    else{

        return T(n , k - 1) + T(n - 1 , k - 1) + T( n - 1 , k );

    }

}
long long S(int n) {         // Schroder Number

    if(n == 0){

        return 1;

    }

    else if(n == 1){

        return 2;

    }

    else{

        long long sum = 0;

        sum = sum + 3 * S(n - 1);

        for(int k = 1 ; k <= n - 2 ; k++){

            sum = sum + ( S(k) * S(n - k - 1));

        }

        return sum;

    }

}
long long W(int n) {         // Wedderburn–Etherington Number

    if(n == 0)

        return 0;

    else if(n == 1)

        return 1;

    else if(n % 2 != 0){

        long long sum = 0;

        for(int i = 1 ; i <= ( (n + 1) / 2 ) - 1 ; i++){

            sum = sum + ( W(i) * W(n - i) );

        }

        return sum;

    }

    else{

        long long sum = 0;

        long long a = W(n / 2);

        sum = sum + (a * (a + 1)) / 2;

        for(int i = 1 ; i <=  (n / 2 ) - 1 ; i++){

            sum = sum + ( W(i) * W(n - i) );

        }

        return sum;

        }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0395, 2024-11-02 12:48:41, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0)return 1;
    if(k > n) return 0;
    return T(n,k-1) + T(n-1,k-1)+ T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0)return 1;
    if(n == 1)return 2;
    long long sum = 0;
    for (long long k = 1; k <= n-2 ; k++){
        sum += (S(k)*S(n-k-1));
    }
    return 3*S(n-1)+sum;
    
}

long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0 || n == 1)return n;
    if(n%2 == 1){
        long long sum = 0;
        for (long long i = 1; i <= ((n+1)/2)-1; i++)
        {
            sum += (W(i)*W(n-i));
        }
        return sum;
    }
    long long sum = (W(n/2)*(W(n/2)+1))/2;
    for (long long i = 1; i <= (n/2)-1; i++)
    {
        sum += (W(i)*W(n-i));
    }
    return sum;
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0396, 2024-11-02 09:22:11, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long sum = 0;
    for (int k=1; k <= n-2; k++){
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    long long sum = 0;
    if (n % 2 == 0) {
        for (int i=1; i <= n/2 -1; i++) {
            sum += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    }
    else {
        for (int i=1; i <= (n+1)/2 -1; i++) {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0397, 2024-11-02 10:19:42, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) {         // Schroder Number
    double sum = 0;
    if(n == 0) return 1;
    if(n == 1) return 2;
    for(int k=1; k <= n-2; k++){
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    double sum = 0;
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2 == 0){
        for(int i=1; i <= n/2 - 1; i++){
            sum += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1)) / 2 + sum;
    }
    if(n%2 != 0){
        for(int i=1; i <= (n+1)/2 - 1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0398, 2024-11-02 09:27:21, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) // Schroder Triangle
{
    if(k > n){return 0;}
    if(k == 0){return 1;}
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}

long long S(int n) // Schroder Number
{
    if(n >= 2)
    {
        long long sum = 0;
        for (int k = 1; k <= n-2; k++)
        {
            sum += (S(k) * S(n-k-1));
        }
        return 3*S(n-1) + sum;
    }
    if(n == 1){return 2;}
    if(n == 0){return 1;}
    return 0;
}

long long W(int n) // Wedderburn–Etherington Number 
{         
    if(n == 0){return 0;}
    if(n == 1){return 1;}
    if(n % 2 == 0)
    {
        long long qt = W(n/2)*(W(n/2)+1);
        qt /= 2;
        long long sum = 0;
        for (int i = 1; i <= n/2 -1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return qt + sum;
    }
    if(n % 2 == 1)
    {
        int idk = (n+1)/2 - 1;
        long long sum = 0;
        for (int i = 1; i <= idk; i++)
        {
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0399, 2024-11-02 12:47:08, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    else if (k > n)
        return 0;
    else
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
        return 1;
    if (n == 1)
        return 2;
    long long result = 3 * S(n - 1);
    for (long long k = 1; k <= n - 2; k++)
    {
        result += S(k) * S(n - k - 1);
    }
    return result;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
        return 0;
    if (n == 1)
        return 1;
    long long result = 0;
    if (n % 2 == 0)
    {
        result+=(W(n/2)*(W(n/2)+1))/2;
        for(int i =1;i<=n/2-1;i++){
            result+=W(i)*W(n-i);
        }
        
    }
    else if(n%2==1){
        for(int i =1;i<=(n+1)/2-1;i++){
            result+=W(i)*W(n-i);
        }
        
    }
    return result;
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0400, 2024-11-02 12:56:38, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n,k-1) + T(n-1,k-1) +T(n-1,k);
}

long long S(int n) { // Schroder Number
    int x = 0;
    if(n == 0) return 1;
    if(n == 1) return 2;
    int result = 3*S(n-1);
    for(int k = 1; k<=n-2; ++k){
        result += S(k)*S(n-k-1);
    }
    x = result;
    return x;
}

long long W(int n) { // Wedderburn–Etherington Number
    int x = 0;
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2 == 0){
        x = (W(n/2)*(W(n/2)+1))/2;
        for(int i = 1; i <= (n/2)-1 ; ++i){
            x += W(i)*W(n-i);
        }
        return x;
    }else{
        x = 0;
        for(int i = 1; i <= ((n+1)/2)-1; ++i){
            x += W(i)*W(n-i);
        }
        return x;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0401, 2024-11-02 12:51:21, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum=0;
    for(int k=1;k<=n-2;k++){
        sum+=(S(k)*S(n-k-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0||n==1) return n;
    int sum=0;
    if(n%2){
        for(int i=1;i<=(n+1)/2-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    for(int i=1;i<=n/2-1;i++){
        sum+=W(i)*W(n-i);
    }
    auto wn2=W(n/2);
    return wn2*(wn2+1)/2+sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0402, 2024-11-02 13:15:46, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k){
	if(k==0) return 1;
	if(k>n) return 0;
	if(1<k && k<=n){
		return T(n,k-1) + T(n-1, k-1) + T(n-1, k);
	}
}
long long S(int n){
	if(n==0) return 1;
	if(n==1) return 2;
	if(n>=2) {
		long long forPart = 0;
		for(int k=1; k<= n-2; k++){
			forPart+=S(k) * S(n-k-1);
		}	
		return 3*S(n-1) + forPart;
	}
}
long long W(int n){
	if(n==0) return 0;
	if(n==1) return 1;
	if(n%2==0){
		long long forPart = 0;
		for(int i=1; i<= (n/2)-1; i++){
			forPart+=W(i)*W(n-i);
		}
		return W(n/2)*(W(n/2)+1)/2 + forPart;
	}
	if(n%2==1){
		long long forPart = 0;
		for(int i=1; i<= n/2; i++){
			forPart+=W(i)*W(n-i);
		}
		return forPart;
	}
}
int main() {
	string fn;
	int p1, p2;
	while (cin >> fn >> p1) {
		if (fn == "T") {
			cin >> p2;
			cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
		} else if (fn == "S") {
			cout << fn << '(' << p1 << ") = " << S(p1) << endl;
		} else if (fn == "W") {
			cout << fn << '(' << p1 << ") = " << W(p1) << endl;
		}
	}
	return 0;
}

# 0403, 2024-11-02 09:26:27, PPPPPPPPPP (100%)

#include <bits/stdc++.h>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(k>n) return 0;
    if(k==0) return 1;
    else {
        return T(n,k-1) + T(n-1,k-1)+ T(n-1,k);
    }


}

long long S(int n) { // Schroder Number
    long long int sum=0;
    if(n==0) return 1;
    if(n==1) return 2;
    else{
        for(int k=1 ; k<=n-2 ; k++){
            sum += S(k)*S(n-k-1);
        }


        return 3*S(n-1) + sum;


    }

}

long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;

        
    long long int sum=0;
    if(n%2==0) {
        for(int i=1 ; i<=n/2-1 ; i++){
            sum += W(i)*W(n-i);
        }

        return (W(n/2)*(W(n/2)+1))/2 + sum;

    }
    if(n%2==1) {
        for(int i=1 ; i<=(n+1)/2-1 ; i++){
            sum += W(i)*W(n-i);
        }

        return sum;
        
    }


}

int main() {
string fn;
int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0404, 2024-11-02 10:38:25, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    int sum = 0;
    for (int k = 1; k <= n-2; ++k) {
        sum += (S(k) * S(n-k-1));
    }
    sum += (3 * S(n-1));
    return sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    int sum = 0;
    if (n%2 == 0) {
        sum += (W(n/2) * (W(n/2) + 1)) / 2;
        for (int k = 1; k <= (n/2)-1; ++k) {
            sum += (W(k) * W(n-k));
        }
    }
    else {
        for (int k = 1; k <= ((n+1)/2)-1; ++k) {
            sum += (W(k) * W(n-k));
        }
    }
    return sum;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0405, 2024-11-02 12:43:23, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    int sum = 3*S(n-1);
    for(int i = 1; i < n-1; i++) {
        sum += S(i) *S(n-1-i);
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n % 2 == 0) {
        int sum = (W(n/2)*(W(n/2)+1))/2;
        for(int i =1; i < n/2; i++) sum += W(i)*W(n-i);
        return sum;
    } else {
        int sum = 0;
        for(int i = 1; i < (n+1)/2; i++) sum += W(i)*W(n-i);
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0406, 2024-11-02 12:43:30, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }

    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n)
{ // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    int result = 0;
    for(int k=1;k<=n-2;k++){
        result += (S(k) * S(n-k-1));
    }
    return 3*S(n-1) + result;

}
long long W(int n)
{ // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }

    if(n % 2 == 0){
        int result = 0;
        for(int i=1;i<=(n/2 - 1);i++){
            result += W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1)) / 2 + result;
    }
    else{
        int result = 0;
        for(int i=1;i<=((n+1)/2 - 1); i++){
            result += W(i) * W(n-i);
        }
        return result;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0407, 2024-11-02 12:56:59, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k==0) return 1;
if (k>n) return 0 ;
return T(n,k-1) +T(n-1,k-1)+T(n-1,k) ;
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2 ;
int sum=0;

for (int k=1;k<=n-2;k++) {
  sum+=(S(k)*S(n-k-1)) ;
}
int first=(3*S(n-1)) ;
return first+sum ;

}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
if (n%2==0) {
int h = n/2 ;
int sum=0;
for (int i=1;i<=h-1;i++) {
  sum+=(W(i)*W(n-i)) ;
}
int first = (W(h)*(W(h)+1))/2 ;
return first+sum ;
}
if (n%2!=0) {
int sum=0;
int x=((n+1)/2)-1;
for (int i=1;i<=x;i++) {
  sum+=(W(i)*W(n-i)) ;
}
return sum ;
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0408, 2024-11-02 09:22:42, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(!n)return 1;
    if(n==1)return 2;
    long long sum=0;
    for(long long i=1;i<=n-2;i++){
        sum+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n<=1)return n;
    if(n%2){
        long long sum=0;
        for(long long i=1;i<=((n+1)/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }else{
        long long sum=0;
        for(long long i=1;i<=(n/2)-1;i++){
            sum+=W(i)*W(n-i);
        }
        int tmp=W(n/2)*(W(n/2)+1)/2;
        return tmp+sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0409, 2024-11-02 12:49:31, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {    // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    long long sum = 0;
    for(long long i = 1; i <= n-2; i++) {
        sum += S(i) * S(n-i-1);
    }
    return 3*S(n-1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2 == 0) {
        long long sum = 0;
        for(long long i = 1; i <= n/2-1; i++) {
            sum += W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    } else {
        long long sum = 0;
        for(long long i = 1; i <= ((n+1)/2)-1; i++) {
            sum +=(W(i)*W(n-i));
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0410, 2024-11-02 12:42:30, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    else if(n==1) return 2;
    long long store =0;
    for(long long i=1 ; i<=n-2 ; i++){
        store+=S(i)*S(n-i-1);
    }
    return 3*S(n-1)+store;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;

    if(n%2==0){
        long long store=0;
        for(long long i=1 ; i<= n/2 - 1 ; i++){
            store += W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2+store;
    }
    else{
        long long store=0;
        for(long long i=1 ; i<= (n+1)/2 -1 ; i++){
            store += W(i)*W(n-i);
        }
        return store;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0411, 2024-11-02 12:48:15, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long total=0;
    for(int k=1;k<n-1;++k)
    {
        total+=(S(k)*S(n-k-1));
    }
    return 3*S(n-1)+total;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0) 
    {
        long long total=0;
        for(int i=1;i<n/2;++i)
        {
            total+=(W(i)*W(n-i));   
        }
        return (W(n/2)*(W(n/2)+1)/2)+total;
    }
    else
    {
        long long total=0;
        for(int i=1;i<(n+1)/2;++i)
        {
            total+=(W(i)*W(n-i));   
        }
        return total;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0412, 2024-11-02 09:35:56, PPPPPPPPPP (100%)

#include <iostream>
#include <math.h>
#include <cmath>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    if (k > n)
        return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    long long sum = 0;
    if (n == 0)
        return 1;
    if (n == 1)
        return 2;
    if (n >= 2)
    {
        for (long long k = 1; k <= n - 2; k++)
        {
            sum += (S(k) * S(n - k - 1));
        }
        return (3 * S(n - 1)) + sum;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if(n%2==0){
        long long sum = 0;
        for (long long i=1;i<=(((int)(n/2))-1);i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    }
    else{
        long long sum = 0;
        for (long long i=1;i<=(((int)((n+1)/2))-1);i++){
            sum+=(W(i)*W(n-i));
        }
        return sum;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0413, 2024-11-02 09:26:26, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k==0)return 1;
    else if(k>n)return 0;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {
    long long sum=0;
    if(n==0||n==1)return n+1;
    else if(n>=2){
        for(int i=1;i<=n-2;i++)sum+=S(i)*S(n-i-1);
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {
    long long sum=0;
    if(n==0||n==1)return n;
    else if(n%2==0){
        for(int i=1;i<=n/2-1;i++)sum+=W(i)*W(n-i);
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }else if(n%2!=0){
        for(int i=1;i<=(n+1)/2-1;i++)sum+=W(i)*W(n-i);
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0414, 2024-11-02 09:21:26, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0){
        return 1;
    }
    if (k > n){
        return 0;
    }
    return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);

}
long long S(int n) {         // Schroder Number
    if (n == 0){
        return 1;
    }
    if (n == 1){
        return 2;
    }
    int sum = 0;
    for (int k = 1 ; k <= n - 2 ; ++k){
        sum += S(k) * S(n - k -1);
    }
    return 3 * S(n - 1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0){
        return 0;
    }
    if (n == 1){
        return 1;
    }
    if (n % 2 == 1 && n > 1){
        int sum = 0;
        for (int i = 1 ; i <= (n + 1)/2 - 1 ; ++i){
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    if (n % 2 == 0 && n > 0){
        int sum = 0;
        for (int i = 1 ; i <= n/2 - 1 ; ++i){
            sum += W(i) * W(n - i);
        }
        return W(n / 2) * (W(n / 2) + 1) / 2 + sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0415, 2024-11-02 09:22:52, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0) return 1;
    else if (k > n) return 0;
    else
    {
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }
}
long long S(int n)
{ // Schroder Number
    if (n == 0) return 1;
    else if (n == 1) return 2;
    else
    {
        long long sumRight = 0;
        for (int k = 1; k <= n-2; k++)
        {
            sumRight += S(k) * S(n - k - 1);
        }
        return (3 * S(n - 1)) + sumRight;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0) return 0;
    else if (n == 1) return 1;
    else
    {
        if (n % 2 == 0)
        {
            long long left, sumRight = 0;
            left = (W(n/2) * (W(n/2) + 1)) / 2;
            for (int i = 1; i <= (n/2) - 1; i++)
            {
                sumRight += W(i) * W(n-i);
            }
            return left + sumRight;
        }
        else
        {
            long long sum = 0;
            for (int i = 1; i <= ((n+1)/2) - 1; i++)
            {
                sum += W(i) * W(n - i);
            }
            return sum;
        }
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0416, 2024-11-02 09:20:17, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k){ // Schroder Triangle
    if(k==0){
        return 1;
    }
    if(k>n){
        return 0;
    }
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n){ // Schroder Number
    long long i,sum=0;
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    for(i=1;i<=n-2;i++){
        sum=sum+S(i)*S(n-i-1);
    }
    return 3*S(n-1)+sum;
}
long long W(int n){ // Wedderburn–Etherington Number
    long long i,sum=0;
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    if(n%2==0){
        for(i=1;i<=(n/2)-1;i++){
            sum=sum+W(i)*W(n-i);
        }
        sum=sum+(W(n/2)*(W(n/2)+1))/2;
    }
    if(n%2==1){
        for(i=1;i<=n/2;i++){
            sum=sum+W(i)*W(n-i);
        }
    }
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0417, 2024-11-02 09:24:18, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0) return 1;
else if(k>n) return 0;
else return T(n,k-1) + T(n-1,k-1) +T(n-1,k);
}
long long S(int n) { // Schroder Number
if(n==0) return 1;
else if(n==1) return 2;
else {long long sum = 0;
for(long long int i = 1; i<=n-2;i++){
    sum += S(i)* S(n-i-1);
}
return 3*S(n-1) + sum;

}
}
long long W(int n) { // Wedderburn–Etherington Number
if(n==0) return 0;
else if (n==1) return 1;
else if(n%2 == 0){
    long long sum=0;
    for(long long i = 1;i<=n/2-1;i++){
        sum+= W(i)*W(n-i);
    }
    return ((W(n/2)*(W(n/2)+1))/2) + sum;
}

else{
    long long sum = 0;
    for(long long i = 1;i<=(n+1)/2-1;i++){
        sum += W(i)*W(n-i);
    }
    return sum;

}
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0418, 2024-11-02 15:21:47, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    else return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    
return 0;
}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    else if(n==1)return 2;

    if(n>=2){
        long long z =0;
        for(long long k = 1; k<= n-2 ; k++){
            z += (S(k)*S(n-k-1));
        }

        return z+3*S(n-1) ;

    }
return 0;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0||n==1)return n;
    
    if(n%2==0){
        long long z =0;     long long k = n/2-1;
        for(int i = 1 ; i <= k ; i++)z+= W(i)*W(n-i);
        return (long long) z+(W(n/2)*(W(n/2)+1))/2 ;
    }
    else {
          long long z =0;     long long k = (n+1)/2-1;
        for(int i = 1 ; i <= k ; i++)z+= W(i)*W(n-i);
        return z;
    }
return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0419, 2024-11-02 12:46:08, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return  T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long result = 0;
    for (int k =1; k<=n-2; k++) {
        result += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + result;
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2==0) {
        long long result = 0;
        for (int i=1; i<=n/2-1; i++) {
            result += W(i)*W(n-i);
        }
        return (W(n/2)*(W((n/2))+1))/2 + result;
    } else {
        long long res = 0;
        for (int i =1; i<=((n+1)/2)-1; i++) {
            res += W(i)*W(n-i);
        }
        return res;
    }
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0420, 2024-11-02 14:43:18, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k > n)
        return 0;
    if (k == 0)
        return 1;

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
        return 1;
    if (n == 1)
        return 2;

    int sum = 0;

    for (int k = 1; k <= (n - 2); ++k)
        sum += (S(k) * S(n - k - 1));

    return ((3 * S(n - 1)) + sum);
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
        return 0;
    if (n == 1)
        return 1;

    if (n % 2 == 0)
    {
        int calc = (W(n / 2) * (W(n / 2) + 1)) / 2;

        int sum = 0;

        for (int i = 1; i <= (n / 2) - 1; ++i)
            sum += (W(i) * W(n - i));

        return calc + sum;
    }
    else
    {
        int sum = 0;

        for (int i = 1; i <= ((n + 1) / 2) - 1; ++i)
            sum += (W(i) * W(n - i));

        return sum;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0421, 2024-11-02 09:31:04, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0) return 1;
if (k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         // Schroder Number
if (n == 0) return 1;
if (n== 1) return 2;
long long rs = 3*S(n-1);
for (long long k = 1 ; k<= n-2;k++)
{
    rs += S(k)* S(n-k-1);
}
return rs;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
if (n%2 == 0)
{
    long long rs = (W(n/2.0)*(W(n/2.0)+1))/2.0;
    for (long long i = 1 ; i<= (n/2.0)-1;i++)
    {
        rs += W(i)*W(n-i);
    }
    return rs;
}
else 
{
    long long rs = 0;
    for (long long i = 1 ; i<=((n+1)/2.0)-1;i++)
    {
        rs += W(i) * W(n-i);
    }
    return rs;
}


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0422, 2024-11-02 09:20:44, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k==0) return 1;
    if (k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2;
    long long sum = 0;
    for (int i=1;i<=n-2;i++) {
        sum += S(i)*S(n-i-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0;
    if (n==1) return 1;
    if (n%2==0) {
        long long f = (W(n/2) * (W(n/2)+1)) / 2;
        long long sum = 0;
        for (int i = 1;i<=(n/2)-1;i++) {
            sum += W(i)*W(n-i);
        }
        return f + sum;
    }
    else {
        long long sum = 0;
        for (int i=1;i<=((n+1)/2)-1;i++) {
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0423, 2024-11-02 10:32:29, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if(k==0){
        return 1;
    }else if(k>n){
        return 0;
    }else {
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }else{
        int sum=0;
        for(int i=1;i<=n-2;++i){
            sum+=(S(i)*S(n-i-1));
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) { 
    if(n==0){
        return 0;
    }else if(n==1){
        return 1;
    }else if(n%2==0){
        int sum=0;
        for(int i=1;i<=(n/2)-1;++i){
            sum+=W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2)+sum;
    }else{
        int sum=0;
        for(int i=1;i<=((n+1)/2)-1;++i){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0424, 2024-11-02 12:44:47, PPPPPPPPPP (100%)

#include <iostream>
#include <map>
#include <vector>
#include <set>
#include <map>
#include <utility>
#include <tuple>
#include <cmath>
#include <algorithm>
#include <cctype>
using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    if (k > n)
        return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
        return 1;
    if (n == 1)
        return 2;

    long long int sum = 0;
    for (int i = 1; i <= n - 2; i++)
    {
        sum += S(i) * S(n - i - 1);
    }
    return 3 * S(n - 1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
        return 0;
    if (n == 1)
        return 1;
    
    if(n%2==0){
        long long int sum = 0;
        for (int i = 1; i <= (n/2)-1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return (( W(n/2)*(W(n/2)+1) )/2) + sum;
        
    }
    
    long long int sum = 0;
    for (int i = 1; i <= ((n+1)/2)-1; i++)
    {
        sum += W(i)*W(n-i);
    }
    return sum;
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0425, 2024-11-02 12:44:21, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if(k==0) return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long int sum=0;
    for(int k=1; k<=n-2; k++){
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long int sum = 0;
        for(int i=1; i<= (n/2)-1; i++){
            sum += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    }else{
        long long int sum = 0;
        for(int i=1; i<= ((n+1)/2)-1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

/*
T 10 11
T 100 0
T 12 10
S 0
S 1
S 20
W 0
W 1
W 20
*/

# 0426, 2024-11-02 14:03:11, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
}
long long S(int n) {         // Schroder Number
    if(n<2)return (n+1);
    long long result = 0;
    result += 3*S(n-1);
    for(int k =1;k<=n-2;k++)result += (S(k)*S(n-k-1));
    return result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n<2)return n;
    if(n%2==0){
        long long result  = 0;
        result += (W(n/2)*(W(n/2)+1));
        result /= 2;
        for(int i=1;i<=(n/2)-1;i++)result += (W(i)*W(n-i));
        return result;
    }
    else {
        long long result = 0;
        for(int i=1;i<=((n+1)/2)-1;i++)result += (W(i)*W(n-i));
        return result;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0427, 2024-11-02 10:31:57, PPPPPPPPPP (100%)

// BossPaul

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum = 0;
    sum = sum + (3*S(n-1));
    for(long long k=1;k<=n-2;k++){
        sum = sum + (S(k)*S(n-k-1));
    }
    return sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long sum = 0;
        for(long long i=1;i<=((n/2)-1);i++){
            sum = sum + (W(i)*W(n-i));
        }
        sum = sum + ((W(n/2)*(W(n/2)+1))/2);
        return sum;
    }
    long long sumo = 0;
    for(long long j=1;j<=(((n+1)/2)-1);j++){
        sumo = sumo + (W(j)*W(n-j));
    }
    return sumo;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0428, 2024-11-02 09:24:09, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{ // Schroder Triangle
    if (k == 0)
        return 1;
    if (k > n)
        return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
        return 1;
    if (n == 1)
        return 2;
    long long sum = 0;
    for (int k = 1; k <= n - 2; ++k)
    {
        sum += S(k) * S(n - k - 1);
    }
    return 3 * S(n - 1) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    long long sum = 0;
    if(n==0)
        return 0;
    if(n==1)
        return 1;
    if (n % 2 == 0)
    {
        for(int i=1;i<=(n/2)-1;++i)
        {
            sum+=W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2)+1)/2 +sum;
    }
    for(int i=1;i<=(n+1)/2-1;++i)
    {
        sum+=W(i)*W(n-i);
    }
    return sum;
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0429, 2024-11-02 12:56:32, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) ;
long long S(int n);
long long W(int n);

long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k < 0) return 0;
    if(n < 0) return 0;

    if(k > n) return 0;

    if(1 < k || k <= n) return T(n, k-1) + T(n-1, k-1) + T(n-1,k) ; 
    //return (n,k);
}

long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n < 0) return 0;
    if(n == 1) return 2;

    long long j = 0;
    for(int k = 1; k <= n-2; k++){
        j += S(k) * S(n-k-1) ;
    }

    if(n >= 2) return 3*S(n-1) + j;

}

long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n < 0) return 0;
    if(n == 1) return 1;

    int j = 0; 
    int l = 0; 
    int k = 0;
    if(n % 2 == 0){
        for(int i = 1; i <= (n/2) - 1; i++){
            l += W(i)* W(n-i);
        }
        
        k = ( (W(n/2)) * (W(n/2) + 1)) / 2 + l;
        return k;
        
    }else{
        for(int i = 1; i <= ((n+1)/2) - 1; i++){
            j += W(i)* W(n-i);
        }
        return j;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0430, 2024-11-02 09:23:14, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){
        return 1;
    }
    else if(k > n){
        return 0;
    }
    else{
        return(T(n, k-1) + T(n-1, k-1) + T(n -1, k));
    }

}
long long S(int n) {         // Schroder Number
    if(n >= 2){
        long long sum = 0;
        for(long long k = 1; k <= (n-2); k++){
            sum += (S(k) * S(n-k-1));
        }
        return 3*S(n-1) + sum;
    }
    else if(n == 0){
        return 1;
    }
    else if(n == 1){
        return 2;
    }
    return 0;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    else if(n == 1) return 1;
    else if(n % 2 == 0){
        long long sum = 0;
        for(int i = 1; i <= ((n/2) -1); i++){
            sum += (W(i) * W(n-i));
        }
        return (W(n/2)*(W(n/2)+1))/2 + sum;
    }
    else{
        long long sum = 0;
        for(int i = 1; i <= (((n+1)/2) -1); i++){
            sum += (W(i) * W(n-i));
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0431, 2024-11-02 12:07:23, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { 
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    
}
long long S(int n) { 
    long long total = 0;
    if (n == 0) return 1;
    if (n == 1) return 2;
    for (int i = 1;i<=n-2;i++){
        total += (S(i)*S(n - i - 1));
    }
    return 3*S(n-1) + total;
    
}
long long W(int n) { 
    long long total1 = 0;
    long long total2 = 0;
    int nhalf  = n/2;
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n % 2 == 0) {
        for (int i = 1;i <= ((nhalf)-1);i++) {
            total1 += W(i)*W(n-i);
        }
        return (W(nhalf)*(W(nhalf)+1))/2 + total1;
     }
    if (n % 2 != 0) {
        for (int i = 1;i <= (((n+1)/2)-1);i++) {
            total2 += W(i)*W(n-i);
        }
        return total2;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0432, 2024-11-02 12:51:00, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if (k == 0) return 1;
    if (k > n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T (n-1, k);
}
long long S(int n) { // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long sum = 0;
    for (int K = 1; K <= n-2; K++) {
        sum +=  S(K) * S(n-K-1);
    }
    return 3 * S(n-1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    if (n % 2 == 0) {
        long long sum = 0;
        for (int i = 1; i <= ((n/2)-1); i++) {
            sum +=  W(i) * W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1)) / 2) + sum;
    }
    if (n % 2 == 1) {
        int sum = 0;
        for (int i = 1; i <= ((n+1)/2)-1; i++) {
            sum +=  W(i) * W(n-i);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;

    while (cin >> fn >> p1) {
    if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    }
    else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    }
    else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
    }
    return 0;
}

# 0433, 2024-11-02 09:36:50, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle   
    if(k == 0)return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long result = 0;
    if(n >= 2){
    for(int k = 1;k<=n-2;k++){
        result += S(k)*S(n-k-1);
        }
    }
    return 3*S(n-1)+ result;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    long long result = 0;
    if(n%2 ==1){
        for(int i =1;i<= ((n+1)/2)-1;i++){
            result += W(i)*W(n-i);
        }
    }else if(n%2 ==0){
        long long sum = 0;
        for(int i= 1;i<=(n/2)-1;i++){
            sum +=W(i)*W(n-i);
        }
        result += (W(n/2)*(W(n/2)+1))/2 + sum;
    }
    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0434, 2024-11-02 12:46:44, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long sum = 3*S(n - 1);
    for (int k =1 ; k < n - 1; k++){
        sum += (S(k)*S(n - k - 1));
    }
    return sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;
    long long sum = 0;
    if (n % 2 == 0) {
        sum = W(n/2) * (W(n/2) + 1) / 2;
        for (int i = 1 ; i < n / 2; i++)  sum += (W(i) * W(n-i));
    } else {
        for (int i = 1 ; i < (n + 1)/ 2 ; i++) sum += (W(i) * W(n - i));
    }
    return sum;
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0435, 2024-11-02 09:20:18, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if( k == 0) return 1;
    if( k > n ) return 0;

    return T(n, k - 1) + T(n-1, k - 1) + T (n - 1, k);
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;

    long long int sum = 0;
    for(int k = 1; k <= n-2 ; k++){
        sum += S(k) * S(n - k -1);
    }

    return 3 * S(n - 1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    long long int sum = 0;
    if(n % 2 == 0){
        //even
        for(int i = 1 ; i <= (n/2) - 1; i++){
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * (W(n/2) + 1)) / 2 )+ sum;
    }else{
        //odd
        for(int i = 1 ; i <= (n+1)/2 - 1; i++){
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
    if (fn == "T") {
    cin >> p2;
    cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
    cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
    cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;
}

# 0436, 2024-11-02 15:21:30, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(k > n) {
        return 0 ;
    }
    else if(k == 0) {
        return 1 ;
    }
    else {
        return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k) ; 
    }
}

long long S(int n) { // Schroder Number
    if(n == 0) {
        return 1 ;
    }
    else if(n == 1) {
        return 2 ;
    }
    else {
        long long result = 0 ;
        for(int i = 1 ; i <= n - 2 ; i++) {
            result += S(i) * S(n - i - 1) ;
        }
        return 3 * S(n - 1) + result ;
    }
}

long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) {
        return 0 ;
    }
    else if(n == 1) {
        return 1 ;
    }
    else if(n % 2 == 0) {
        long long result = 0 ;
        for(int i = 1 ; i <= n / 2 - 1 ; i++) {
            result += W(i) * W(n - i) ;
        }
        return (W(n / 2) * (W(n / 2) + 1)) / 2 + result ;
    }
    else {
        long long result = 0 ;
        for(int i = 1 ; i <= (n + 1) / 2 - 1 ; i++) {
            result += W(i) * W(n - i) ;
        }
        return result ;
    }
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0437, 2024-11-02 09:20:15, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) return 0;
    if (k == 0) return 1;
    return T(n, k-1) + T(n - 1, k - 1) + T(n - 1, k);

}
long long S(int n) {         // Schroder Number
    if (n == 0) return 1;
    if (n == 1) return 2;
    long long sum = 0;
    for (int k = 1; k <= n - 2; k++) {
        sum += S(k)*S(n - k - 1);
    }
    return 3 * S(n - 1) + sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) return 0;
    if (n == 1) return 1;

    if (n % 2 == 0) {
        long long sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++) {
            sum += (W(i)*W(n - i));
        }
        return (W(n / 2)*(W(n / 2) + 1) / 2) + sum;
    } else {
        long long sum = 0;
        for (int i = 1; i <= ((n + 1)/2) - 1; i++) {
            sum += (W(i)*W(n - i));
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0438, 2024-11-02 12:48:58, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n) return 0;
    if(k == 0) return 1;
    return (T(n, k-1)+ T(n-1, k-1) + T(n-1, k));

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    long long sum = 0;
    for(int i = 1; i <= n-2; i++){
        sum += S(i)*S(n-i-1);
    }
    return (3*S(n-1) + sum); //????

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    int sum = 0;
    if(n%2 == 0){
        for(int i = 1; i <= n/2 - 1; i++){
            sum += W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1)/2 + sum);
    }
    for(int i = 1; i <= (n+1)/2 - 1; i++){
        sum += W(i)*W(n-i);
    }
    return sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0439, 2024-11-02 09:23:54, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){
        return 1;
    }
    else if(k > n){
        return 0;
    }
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }
    else if(n == 1){
        return 2;
    }

    int k;
    long long sum=0;
    for(k=1;k<=n-2;k++){
        sum += S(k)*S(n-k-1);
    }
    return (3*S(n-1))+sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    else if(n == 1){
        return 1;
    }
    else if(n%2 == 1){
        int i;
        long long sum=0;
        for(i=1;i<=((n+1)/2.0)-1;i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    int i;
    long long w,sum=0;
    w=(W(n/2.0)*(W(n/2)+1))/2.0;
    for(i=1;i<=(n/2.0)-1;i++){
        sum += W(i)*W(n-i);
    }
    return w+sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0440, 2024-11-02 09:19:40, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){return 1;}
    if(k > n){return 0;}
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n == 0){return 1;}
    if(n == 1){return 2;}
    long long total = 3 * S(n-1);
    for(int k = 1; k<=n-2; k++){
        total += S(k) * S(n-k-1);
    }
    return total;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0 || n == 1){return n;}
    if(n%2 == 0){
        long long total = (W(n/2)*((W(n/2))+1))/2;
        for(int i = 1; i <= n/2-1; i++){
            total += W(i)*W(n-i);
        }
        return total;
    }
    else{
        long long total = 0;
        for(int i = 1; i <= ((n+1)/2)-1; i++){
            total += W(i) * W(n-i);
        }
        return total;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0441, 2024-11-02 12:44:01, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > n)return 0;
    else if(k == 0)return 1;
    else{
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
}
long long S(int n) {         // Schroder Number
    if(n == 0)return 1;
    else if(n == 1)return 2;
    else{
        long long sum = 0;
        for(int k = 1;k <=n-2;k++){
            sum+= S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)return 0;
    else if(n == 1)return 1;
    else if(n%2==1){
        long long sum = 0;
        for(int i = 1;i <=((n+1)/2)-1;i++){
            sum+=(W(i)*W(n-i));
        }
        return sum;
    }
    else{
        long long sum = 0;
        for(int i = 1;i <=(n/2)-1;i++){
            sum+=(W(i)*W(n-i));
        }
        return (W(n/2)*(W(n/2)+1))/2+sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0442, 2024-11-02 11:06:19, PPPPPPPPPP (100%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    else return  T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);

}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum=0;
    for(int i=1;i<=n-2;i++)sum+=S(i)*S(n-i-1);
    return 3*S(n-1)+sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long sum=0;
    for(int i=1;i<=n/2-1;i++)sum+=W(i)*W(n-i);
    return (W(n/2)*(W(n/2)+1))/2+sum;
    }
    else{
     long long sum=0;
    for(int i=1;i<=(n+1)/2-1;i++)sum+=W(i)*W(n-i);
    return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0443, 2024-11-02 09:22:32, PPPPPPPPPP (100%)

#include <iostream>
using namespace std;

// Schroder Triangle
long long T(int n, int k) {  
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}

// Schroder Number
long long S(int n) {
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }

    long long sum = 0;
    for (int k = 1; k < n-1; k++)
    {
        sum += S(k)*S(n-k-1);
    }
    return 3*S(n-1) + sum;
}

// Wedderburn–Etherington Number
long long W(int n) {
    if(n == 0 || n == 1){
        return n;
    }
    if(n % 2 == 0){
        long long sum = 0;
        for (int i = 1; i <= n / 2 - 1; i++)
        {
            sum += W(i)*W(n-i);
        }
        return W(n/2)*(W(n/2) + 1)/ 2 + sum;
    }else{
        long long sum = 0;
        for (int i = 1; i <= (n + 1) / 2 - 1; i++)
        {
            sum += W(i) * W(n-i);
        }
        return sum;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

Max Score = 90


# 0444, 2024-11-02 12:43:41, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        int w = (W(n/2)*W((n/2)+1))/2;
        for(int i=1; i<(n/2)-1; i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        int w=0;
        for(int i=1; i<(n+1)/2 - 1; i++){
            w += (W(i)*W(n-1));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0445, 2024-11-02 14:29:47, PPPPPPP--- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<(n/2)-1; i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w=0;
        for(int i=1; i<(n+1)/2 - 1; i++){
            w += (W(i)*W(n-1));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0446, 2024-11-02 14:30:37, PPPPPPP-T- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<(n/2); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w=0;
        for(int i=1; i<(n+1)/2; i++){
            w += (W(i)*W(n-1));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0447, 2024-11-02 14:31:38, PPPPPPP-T- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<=((n/2) -1); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w=0;
        for(int i=1; i<=((n+1)/2)-1; i++){
            w += (W(i)*W(n-1));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0448, 2024-11-02 14:36:03, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<=((n/2) -1); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w=0;
        for(int i=1; i<=((n+1)/2)-1; i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0449, 2024-11-02 15:25:03, PPPP--PPP- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-2; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<=((n/2) -1); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w = 0;
        for(int i=1; i<=(((n+1)/2)-1); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0450, 2024-11-02 15:25:32, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<((n/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w = 0;
        for(int i=1; i<(((n+1)/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0451, 2024-11-02 15:25:53, PPPPPPP--- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<((n/2)-1); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w = 0;
        for(int i=1; i<(((n+1)/2)-1); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0452, 2024-11-02 15:26:10, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<((n/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w = 0;
        for(int i=1; i<(((n+1)/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0453, 2024-11-02 15:30:51, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    float w;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<((n/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w = 0;
        for(int i=1; i<(((n+1)/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    return w;
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0454, 2024-11-02 15:31:11, PPPPPPP--- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    float w;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<((n/2)); i++){
            w += (W(i)*W(n-i));
        }
    }
    if(n%2==1){
        float w = 0;
        for(int i=1; i<(((n+1)/2)); i++){
            w += (W(i)*W(n-i));
        }
    }
    return w;
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0455, 2024-11-02 15:31:25, PPPPPPPPP- (90%)

#include <iostream>
using namespace std;

long long T(int n, int k){ // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n){ // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    float s = 3*S(n-1);
    for(int k=1; k<n-1; k++){
        s += S(k) * S(n-k-1);
    }
    return s;
}
long long W(int n){ // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    float w;
    if(n%2==0){
        float w = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1; i<((n/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    if(n%2==1){
        float w = 0;
        for(int i=1; i<(((n+1)/2)); i++){
            w += (W(i)*W(n-i));
        }
        return w;
    }
    return w;
}

int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0456, 2024-11-02 12:58:35, PPPP--P--- (50%)

#include <bits/stdc++.h>


using namespace std;


long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(1 <= k && k >= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    if(n >= 2){
        int s1 = 3 * S(n-1);
        int s2 = 0;
        int sum = 0;
        for(int i = 1; i <= (n/2); i++){
            s2 += S(i)*S(n -i-1);
        }
        sum = s1 + s2;
        return sum;
    }
    
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        int e = W(n/2);
        int o = W(n/2) + 1;
        int s1 = (e * o)/2;

        int sum = 0;
        for(int i = 1; i <= (n/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }
    if(n % 2 == 1){
        int sum = 0;
        for(int i = 1; i <= ((n+1)/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }


}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
           cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0457, 2024-11-02 13:01:16, PPPP--P--- (50%)

#include <bits/stdc++.h>


using namespace std;


long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(1 <= k && k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    if(n >= 2){
        int s1 = 3 * S(n-1);
        int s2 = 0;
        int sum = 0;
        for(int i = 1; i <= (n/2); i++){
            s2 += S(i)*S(n -i-1);
        }
        sum = s1 + s2;
        return sum;
    }
    
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        int e = W(n/2);
        int o = W(n/2) + 1;
        int s1 = (e * o)/2;

        int sum = 0;
        for(int i = 1; i <= (n/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }
    if(n % 2 == 1){
        int sum = 0;
        for(int i = 1; i <= ((n+1)/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }


}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
           cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0458, 2024-11-02 13:02:47, PPPPPPP--- (70%)

#include <bits/stdc++.h>


using namespace std;


long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(1 <= k && k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    if(n >= 2){
        int s1 = 3 * S(n-1);
        int s2 = 0;
        int sum = 0;
        for(int i = 1; i <= (n-2); i++){
            s2 += S(i)*S(n -i-1);
        }
        sum = s1 + s2;
        return sum;
    }
    
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        int e = W(n/2);
        int o = W(n/2) + 1;
        int s1 = (e * o)/2;

        int sum = 0;
        for(int i = 1; i <= (n/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }
    if(n % 2 == 1){
        int sum = 0;
        for(int i = 1; i <= ((n+1)/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }


}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
           cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0459, 2024-11-02 13:04:14, PPPPPPP--- (70%)

#include <bits/stdc++.h>


using namespace std;


long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(1 <= k && k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    if(n >= 2){
        long long  s1 = 3 * S(n-1);
        long long  s2 = 0;
        long long sum = 0;
        for(int i = 1; i <= (n-2); i++){
            s2 += S(i)*S(n -i-1);
        }
        sum = s1 + s2;
        return sum;
    }
    
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        int e = W(n/2);
        int o = W(n/2) + 1;
        int s1 = (e * o)/2;

        int sum = 0;
        for(int i = 1; i <= (n/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }
    if(n % 2 == 1){
        int sum = 0;
        for(int i = 1; i <= ((n+1)/2) -1; i++){
            sum += W(i)*W(i-1);
        }
        return sum;
    }


}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
           cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0460, 2024-11-02 13:11:54, PPPPPPxPPP (90%)

#include <bits/stdc++.h>


using namespace std;


long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(1 <= k && k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    if(n >= 2){
        long long  s1 = 3 * S(n-1);
        long long  s2 = 0;
        long long sum = 0;
        for(int i = 1; i <= (n-2); i++){
            s2 += S(i)*S(n -i-1);
        }
        sum = s1 + s2;
        return sum;
    }
    
}
long long W(int n) { // Wedderburn–Etherington Number
    // if(n == 0){
    //     return 0;
    // }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        int e = W(n/2);
        int o = W(n/2) + 1;
        int s1 = (e * o)/2;
        int s2 = 0;
        for(int i = 1; i <= (n/2) -1; i++){
            s2 += W(i)*W(n-i);
        }
        int sum = s1 + s2;
        return sum;
    }
    if(n % 2 == 1){
        int sum = 0;
        for(int i = 1; i <= ((n+1)/2) -1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }


}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
           cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0461, 2024-11-02 13:12:46, PPPPPPxPPP (90%)

#include <bits/stdc++.h>


using namespace std;


long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(1 <= k && k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    if(n >= 2){
        long long  s1 = 3 * S(n-1);
        long long  s2 = 0;
        long long sum = 0;
        for(int i = 1; i <= (n-2); i++){
            s2 += S(i)*S(n -i-1);
        }
        sum = s1 + s2;
        return sum;
    }
    
}
long long W(int n) { // Wedderburn–Etherington Number
    // if(n == 0){
    //     return 0;
    // }
    if(n == 1){
        return 1;
    }
    if(n % 2 == 0){
        long long e = W(n/2);
        long long o = W(n/2) + 1;
        long long s1 = (e * o)/2;
        long long s2 = 0;
        for(int i = 1; i <= (n/2) -1; i++){
            s2 += W(i)*W(n-i);
        }
        long long sum = s1 + s2;
        return sum;
    }
    if(n % 2 == 1){
        long long sum = 0;
        for(int i = 1; i <= ((n+1)/2) -1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }


}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
           cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0462, 2024-11-02 09:37:24, PPPPPPPPTP (90%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle

    if(k>n) return 0;
    if(k==0) return 1;
    return T(n,k-1)+T(n-1,k-1) +T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long sum=0;

    for(int k=1;k<=n-2;k++){
        (sum +=S(k)*S(n-k-1));
    }
    return 3*S(n-1)+sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;

    long long sum1=0,sum2=0;
    for(int i=1;i<=((n+1)/2)-1;i++){
        sum1 +=W(i)*W(n-i);
    }
    for(int i=1;i<=(n/2)-1;i++){
        sum2 +=W(i)*W(n-i);
    }
    if(n%2==1) return sum1;
    return (W(n/2)*(W(n/2)+1))/2 + sum2;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

Max Score = 70


# 0463, 2024-11-02 13:05:58, ---P---xxx (10%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 0;
else if (k > n)return 1;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long Sum=0;
for (int k=1;k <= (n-2);k++){
  Sum += S(k)* S(n-k-1);
}return Sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return n;
if (n==1) return 0;
long long All=0;
for (int i=0;i <= ((n+1)/2)-1;i++){
  All += W(i)* W(n-i);
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0464, 2024-11-02 13:39:23, PPPPxx-xxx (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n+2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return n;
if (n==1) return 0;
long long All=0;
for (int i=0;i <= ((n+1)/2)-1;i++){
  All += W(i)* W(n-i);
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0465, 2024-11-02 13:44:03, PPPP---xxx (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return n;
if (n==1) return 0;
long long All=0;
for (int i=0;i <= ((n+1)/2)-1;i++){
  All += W(i)* W(n-i);
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0466, 2024-11-02 13:53:45, PPPP--P-T- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i <= (n/2)-1;i++){
  All += (W(n/2)*W((n/2))+1)/2 * (W(i)* W(n-i));
}
for (int i=1;i <= ((n+1)/2)-1;i++){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0467, 2024-11-02 13:57:43, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;i++){
All +=(W(n/2)*W((n/2))+1)/2 * (W(i)* W(n-i));
}
for (int i=1;i < ((n+1)/2)-1;i++){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0468, 2024-11-02 14:01:21, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
All +=(W(n/2)*W((n/2))+1)/2 ;
for (int i=1;i < (n/2)-1;i++){
All +=(W(n/2)*(W((n/2))+1)/2) * (W(i)* W(n-i));
}
for (int i=1;i < ((n+1)/2)-1;i++){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0469, 2024-11-02 14:05:02, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
long long sum=0;
sum += (W(n/2)*(W((n/2))+1)/2) ;
for (int i=1;i < (n/2)-1;i++){
 All += (W(i)* W(n-i));
}All += sum*All;
for (int i=1;i < ((n+1)/2)-1;i++){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0470, 2024-11-02 14:09:00, PPPP--PTTT (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;i+2){
 All += (W(n/2)*(W((n/2))+1)/2)*(W(i)* W(n-i));
}
for (int i=1;i < ((n+1)/2)-1;i+2){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0471, 2024-11-02 14:27:30, PPPP--PTTT (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += (3*S(n-1)) + S(k)*(S(n-k-1));
}return All;
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;i+2){
 All += (W(n/2)*(W((n/2))+1)/2)*(W(i)* W(n-i));
}
for (int i=1;i < ((n+1)/2)-1;i+2){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0472, 2024-11-02 14:29:53, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;i+2){
 All += (W(n/2)*(W((n/2))+1)/2)*(W(i)* W(n-i));
}
for (int i=1;i < ((n+1)/2)-1;i+2){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0473, 2024-11-02 14:32:09, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;i+2){
 All += (W(i)* W(n-i));
}return All *= (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < ((n+1)/2)-1;i+2){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0474, 2024-11-02 14:32:46, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;i++){
 All += (W(i)* W(n-i));
}return All *= (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < ((n+1)/2)-1;i++){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0475, 2024-11-02 14:34:40, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;2+i++){
 All += (W(i)* W(n-i));
}return All *= (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < ((n+1)/2)-1;2+i++){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0476, 2024-11-02 14:37:10, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long All=0;
for (int i=1;i < (n/2)-1;i++){
 All += (W(n/2)*(W((n/2))+1)/2)*(W(i)* W(n-i));
}return All ;
for (int i=1;i < ((n+1)/2)-1;i++){
  All += (W(i)* W(n-i));
}return All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0477, 2024-11-02 14:38:26, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
for (int i=1;i < (n/2)-1;i++){
 Sum += (W(n/2)*(W((n/2))+1)/2)*(W(i)* W(n-i));
}return Sum ;
for (int i=1;i < ((n+1)/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0478, 2024-11-02 14:45:14, PPPPPP---- (60%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return n;
if (n==1) return n-1;
long long Sum=0;
long long All=0;
All = (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < (n/2)-1;i++){
 Sum += (W(i)* W(n-i));
}return Sum;
for (int i=1;i < (n+1/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum;
 return Sum*All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0479, 2024-11-02 14:45:32, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < (n/2)-1;i++){
 Sum += (W(i)* W(n-i));
}return Sum;
for (int i=1;i < (n+1/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum;
 return Sum*All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0480, 2024-11-02 14:46:14, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < (n/2)-1;++i){
 Sum += (W(i)* W(n-i));
}return Sum;
for (int i=1;i < (n+1/2)-1;++i){
  Sum += (W(i)* W(n-i));
}return Sum;
 return Sum*All;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0481, 2024-11-02 14:47:51, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < (n/2)-1;i++){
 Sum += (W(i)* W(n-i));
 for (int i=1;i < (n+1/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum*All;
}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0482, 2024-11-02 14:48:37, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*(W((n/2))+1)/2);
for (int i=1;i < (n/2)-1;i++){
 Sum += (W(i)* W(n-i));
 return Sum;
 for (int i=1;i < (n+1/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum*All;
}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0483, 2024-11-02 14:50:54, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
for (int i=1;i < (n/2)-1;i++){
 Sum += (W(i)* W(n-i));
}All = (W(n/2)*((W(n/2))+1)/2);
for (int i=1;i < (n+1/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum+All;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0484, 2024-11-02 14:52:38, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*((W(n/2))+1)/2);
for (int i=1;i < (n/2)-1;i++){
 Sum += (W(i)* W(n-i));
}return Sum*All;
for (int i=1;i < (n+1/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum+All;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0485, 2024-11-02 14:53:45, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*((W(n/2))+1)/2);
for (int i=1;i < (n/2)-1;i++){
 Sum = (W(i)* W(n-i));
}return Sum*All;
for (int i=1;i < (n+1/2)-1;i++){
  Sum = (W(i)* W(n-i));
}return Sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0486, 2024-11-02 14:54:29, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*((W(n/2))+1)/2);
for (int i=1;i < (n/2)-1;i++){
 Sum += All*(W(i)* W(n-i));
}return Sum;
for (int i=1;i < (n+1/2)-1;i++){
  Sum += (W(i)* W(n-i));
}return Sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0487, 2024-11-02 15:25:18, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
long long All=0;
All = (W(n/2)*((W(n/2))+1)/2);
for (int i=1;i < (n/2)-1 && i < (n+1/2)-1;i++){
 Sum += (W(n/2)*((W(n/2))+1)/2) * (W(i)* W(n-i));
}return Sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0488, 2024-11-02 15:25:40, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)return 1;
else if (k > n)return 0;
return T(n, k - 1)+T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n) {         // Schroder Number
if (n==0) return 1;
if (n==1) return 2;
long long All=0;
for (int k=1;k <= (n-2);k++){
  All += S(k)*(S(n-k-1));
}return All += (3*S(n-1));
}
long long W(int n) {         // Wedderburn–Etherington Number
if (n==0) return 0;
if (n==1) return 1;
long long Sum=0;
for (int i=1;i < (n/2)-1 && i < (n+1/2)-1;i++){
 Sum += (W(n/2)*((W(n/2))+1)/2) * (W(i)* W(n-i));
}return Sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0489, 2024-11-02 09:29:28, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0 , sume = 0;

    if(n % 2 != 0)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    else
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sume;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0490, 2024-11-02 11:03:19, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0;

    if(n % 2 != 0)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    else
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sumo;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0491, 2024-11-02 11:04:51, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0;

    if(n % 2 != 0)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n % 2 == 0)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sumo;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0492, 2024-11-02 11:05:18, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0;

    if(n % 2 != 0)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }

    if(n % 2 == 0)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sume;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0493, 2024-11-02 11:05:38, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0 , sume = 0;

    if(n % 2 != 0)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }

    if(n % 2 == 0)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sume;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0494, 2024-11-02 11:06:06, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0 , sume = 0;

    if(n % 2 == 0)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sume;
    }

    if(n % 2 != 0)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0495, 2024-11-02 11:06:34, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0;

    if(n % 2 == 0)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sumo;
    }

    if(n % 2 != 0)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0496, 2024-11-02 11:07:27, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }

    long long sumo = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sumo;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0497, 2024-11-02 11:07:57, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2) + 1)) / 2 + sumo;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0498, 2024-11-02 11:55:38, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * (W(n / 2 + 1) / 2 + sumo;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0499, 2024-11-02 11:56:34, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * W(n / 2 + 1)) / 2 + sumo;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0500, 2024-11-02 11:57:19, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(int i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0 , sume = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(int i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return (W(n / 2) * W(n / 2 + 1)) / 2 + sume;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(int i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0501, 2024-11-02 12:01:58, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(long i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0 , sume = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(long i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return (W(n / 2) * W(n / 2 + 1)) / 2 + sume;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(long i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0502, 2024-11-02 12:02:28, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(long long i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0 , sume = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(long long i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return (W(n / 2) * W(n / 2 + 1)) / 2 + sume;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(long long i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0503, 2024-11-02 12:03:01, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(long long i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(long long i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return (W(n / 2) * W(n / 2 + 1)) / 2 + sumo;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(long long i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0504, 2024-11-02 12:05:49, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(long long i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(long long i = 0 ; i < n / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return ((W(n / 2) * W(n / 2 + 1)) / 2) + sumo;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(long long i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}
# 0505, 2024-11-02 12:06:36, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{ // Schroder Triangle
    if(k == 0)
    {
        return 1;
    }

    if(k > n)
    {
        return 0;
    }

    if(n >= k && k > 1)
    {
        return T(n , k - 1) + T(n - 1 , k - 1) + T(n - 1 , k);
    }
}

long long S(int n) 
{ // Schroder Number
    long long sum = 0;

    if(n == 0)
    {
        return 1;
    }

    if(n == 1)
    {
        return 2;
    }

    if(n >= 2)
    {
        for(long long i = 1 ; i < n - 1 ; i++)
        {
            sum = sum + S(i) * S(n - i - 1);
        }

        return 3 * S(n - 1) + sum;
    }
}

long long W(int n) 
{ // Wedderburn–Etherington Number

    long long sumo = 0 , sume = 0;

    if(n % 2 == 0 && n >= 2)
    {
        for(long long i = 0 ; i < n / 2 ; i++)
        {
            sume = sume + W(i) * W(n - i);
        }

        return ((W(n / 2) * W(n / 2 + 1)) / 2) + sume;
    }

    if(n % 2 != 0 && n >= 3)
    {
        for(long long i = 0 ; i < (n + 1) / 2 ; i++)
        {
            sumo = sumo + W(i) * W(n - i);
        }

        return sumo;
    }
    
    if(n == 0)
    {
        return 0;
    }

    if(n == 1)
    {
        return 1;
    }
}

int main() 
{
    string fn;

    int p1, p2;

    while (cin >> fn >> p1) 
    {
        if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } 
        else if (fn == "S") 
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } 
        else if (fn == "W") 
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }

    return 0;
}

# 0506, 2024-11-02 12:42:52, P--P--xxxx (20%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(k > 1 && n > k)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n)
    {
        return 0;
    }
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i < n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if (n % 2 == 0)
    {
        int sum = 0;
        for (int i = 1; i < (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if (n%2 != 0 && n!= 0 && n!= 1)
    {
        int sum = 0;
        for (int i = 1; i < (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    else if(n == 1) return 1;
    else return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0507, 2024-11-02 12:44:09, P--PPPxxxx (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(k > 1 && n > k)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n)
    {
        return 0;
    }
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if (n % 2 == 0)
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if (n%2 != 0 && n!= 0 && n!= 1)
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    else if(n == 1) return 1;
    else return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0508, 2024-11-02 14:48:11, P--PPPPxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(k > 1 && n >= k)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n)
    {
        return 0;
    }
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if (n % 2 == 0 && n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if (n%2 != 0 && n >= 3)
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    else if(n == 1) return 1;
    else return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0509, 2024-11-02 15:00:39, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 <= k && k <= n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n) return 0;
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if (n % 2 == 0 && n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if (n%2 != 0 && n >= 3)
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    else if(n == 1) return 1;
    else return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0510, 2024-11-02 15:30:10, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 <= k && k <= n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n) return 0;
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if ((n % 2 == 0) && (n >= 2))
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if ((n%2 == 1) && (n >= 3))
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    else if(n == 1) return 1;
    else return 0;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0511, 2024-11-02 15:31:10, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 <= k && k <= n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n) return 0;
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if ((n % 2 == 0) && (n >= 2))
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if ((n%2 == 1) && (n >= 3))
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    else if(n == 0) return 0;
    else return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0512, 2024-11-02 15:31:47, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 <= k && k <= n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n) return 0;
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if ((n % 2 == 0) && (n >= 2))
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += (W(i) * W(n - i));
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if ((n%2 == 1) && (n >= 3))
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += (W(i) * W(n - i));
        }
        return sum;
    }
    else if(n == 0) return 0;
    else return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0513, 2024-11-02 15:32:26, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 <= k && k <= n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n) return 0;
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if ((n % 2 == 0) && (n >= 2))
    {
        int sum = 0;
        for (int i = 1; i <= (n+1/2) - 1; i++)
        {
            sum += (W(i) * W(n - i));
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if ((n%2 == 1) && (n >= 3))
    {
        int sum = 0;
        for (int i = 1; i <= (n+1/2) - 1; i++)
        {
            sum += (W(i) * W(n - i));
        }
        return sum;
    }
    else if(n == 0) return 0;
    else return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0514, 2024-11-02 15:32:55, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 <= k && k <= n)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if (k > n) return 0;
    else return 1;
}
long long S(int n) {     
    if (n >= 2)
    {
        int sum = 0;
        for (int i = 1; i <= n-2; i++)
        {
            sum += S(i) * S(n - i - 1); 
        }
        return (3 * S(n-1)) + sum;
    }
    else if (n == 1)
    {
        return 2;
    }
    else return 1;
}
long long W(int n) {         
    if ((n % 2 == 0) && (n >= 2))
    {
        int sum = 0;
        for (int i = 1; i <= (n/2) - 1; i++)
        {
            sum += (W(i) * W(n - i));
        }
        return ((W(n/2) * W((n/2)+1)) / 2) + sum;
    }
    else if ((n%2 == 1) && (n >= 3))
    {
        int sum = 0;
        for (int i = 1; i <= (n+1/2) - 1; i++)
        {
            sum += (W(i) * W(n - i));
        }
        return sum;
    }
    else if(n == 0) return 0;
    else return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0515, 2024-11-02 09:19:56, Pxxxxxxxxx (10%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    int a = 0, b;
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else if(k > 1 && k <= n){
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
    }
}

long long S(int n) { // Schroder Number
}

long long W(int n) { // Wedderburn–Etherington Number
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0516, 2024-11-02 09:20:59, Pxxxxxxxxx (10%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    int a = 0, b;
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else if(k > 1 && k <= n){
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
       return b;
    }
    a = 0;
    b = 0;
}

long long S(int n) { // Schroder Number
}

long long W(int n) { // Wedderburn–Etherington Number
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0517, 2024-11-02 09:22:40, PPPxxxxxx- (30%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    long long a = 0, b;
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else if(k > 1 && k <= n){
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
       return b;
    }
    a = 0;
    b = 0;
}

long long S(int n) { // Schroder Number
}

long long W(int n) { // Wedderburn–Etherington Number
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0518, 2024-11-02 09:29:43, PPPP------ (40%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    long long a = 0, b;
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else if(k > 1 && k <= n){
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
       return b;
    }
    a = 0;
    b = 0;
}

long long S(int n) { 
    long long a, b, c = 0;
    if(n == 0){
        a =1 ;
        return a;
    }else if(n == 1){
        a = 2;
        return a;
    }else if(n >=2){
        b =3*S(n-1);
        for(int i =0; i < n-2; ++i){
            c += S(i)*S(n-i-1);
        }
        b += c;
        return b;
    }
    a =0, b = 0; c =0;
}

long long W(int n) { // Wedderburn–Etherington Number
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0519, 2024-11-02 09:31:58, PPPP--P--- (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    long long a = 0, b;
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else if(k > 1 && k <= n){
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
       return b;
    }
    a = 0;
    b = 0;
}

long long S(int n) { 
    long long a, b, c = 0;
    if(n == 0){
        a =1 ;
        return a;
    }else if(n == 1){
        a = 2;
        return a;
    }else if(n >=2){
        b =3*S(n-1);
        for(int i =0; i < n-2; ++i){
            c += S(i)*S(n-i-1);
        }
        b += c;
        return b;
    }
    a =0, b = 0; c =0;
}

long long W(int n) { 
    if(n == 0){
        return 0;
    }else if(n ==1){
        return 1;
    }
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0520, 2024-11-02 09:35:03, PPPP--P--- (50%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    long long a = 0, b;
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else if(k > 1 && k <= n){
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
       return b;
    }
    a = 0;
    b = 0;
}

long long S(int n) { 
    long long a, b, c = 0;
    if(n == 0){
        a =1 ;
        return a;
    }else if(n == 1){
        a = 2;
        return a;
    }else if(n >=2){
        b =3*S(n-1);
        for(int i =0; i < n-2; ++i){
            c += S(i)*S(n-i-1);
        }
        b += c;
        return b;
    }
    a =0, b = 0; c =0;
}

long long W(int n) { 
    if(n == 0){
        return 0;
    }else if(n ==1){
        return 1;
    }else if( n% 2 == 0 && n >=0){
        
    }else if( n% 2 == 1 && n >=0){

    }
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0521, 2024-11-02 11:02:45, xxxPPPP--x (40%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    long long a = 0, b;
    if(k > 1 && k <= n){
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else{
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
       return b;
    }
    a = 0;
    b = 0;
    }
}

long long S(int n) { 
    long long a, b, c = 0;
    if(n == 0){
        a =1 ;
        return a;
    }else if(n == 1){
        a = 2;
        return a;
    }else if(n >=2){
        b =3*S(n-1);
        for(int i =1; i < n-1; ++i){
            c += S(i)*S(n-i-1);
        }
        b += c;
        return b;
    }
    a =0, b = 0; c =0;
}

long long W(int n) { 
    int a, b =0;
    if(n == 0){
        return 0;
    }else if(n ==1){
        return 1;
    }else if( n% 2 == 0 && n >=0){
        for(int i =1; i < (n+1/2); ++i){
              b += W(i)*W(n-i);
              return b;
        }
    }else if( n% 2 == 1 && n >=0){
        for(int i =1; i < (n/2); ++i){
              b += W(i)*W(n-i);
        }
        a = ((W(n/2)*(W(n/2)+ 1))/2) + b;
        return a;
    }
    b =0;
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0522, 2024-11-02 11:03:42, PPPPPPP--- (70%)

#include <iostream>
using namespace std;

long long T(int n, int k) { 
    long long a = 0, b;
    
    if(k == 0){
        a = 1;
        return a;
    }else if(k > n){
        a = 0;
        return a;
    }else if(k > 1 && k <= n){
       b = T(n ,k -1) + T(n-1, k-1) + T(n-1, k); 
       return b;
    }
    a = 0;
    b = 0;
    
}

long long S(int n) { 
    long long a, b, c = 0;
    if(n == 0){
        a =1 ;
        return a;
    }else if(n == 1){
        a = 2;
        return a;
    }else if(n >=2){
        b =3*S(n-1);
        for(int i =1; i < n-1; ++i){
            c += S(i)*S(n-i-1);
        }
        b += c;
        return b;
    }
    a =0, b = 0; c =0;
}

long long W(int n) { 
    int a, b =0;
    if(n == 0){
        return 0;
    }else if(n ==1){
        return 1;
    }else if( n% 2 == 0 && n >=0){
        for(int i =1; i < (n+1/2); ++i){
              b += W(i)*W(n-i);
              return b;
        }
    }else if( n% 2 == 1 && n >=0){
        for(int i =1; i < (n/2); ++i){
              b += W(i)*W(n-i);
        }
        a = ((W(n/2)*(W(n/2)+ 1))/2) + b;
        return a;
    }
    b =0;
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0523, 2024-11-02 10:46:44, P--P--PxxT (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 < k && k <= n)
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    if(k > n) return 0;
    if(k == 0) return 1;
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n>=2)
    {
        int sum = 3*S(n-1);
        for(int k=1;k<=n-2;k++)
        sum += S(n-1) + S(k)*S(n-k-1);
        return sum;
    }

}
long long W(int n) {
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0)
    {
        int sum;
        sum = W(n/2)*(W(n/2)+1);
        for(int i=1;i<=(n/2)-1;i++)
        sum += W(i) + W(n-i);
    }
    else
    {
        int sum;
        for(int i=1;i<=((n+1)/2)-1;i++)
        sum += W(i) + W(n-i);
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0524, 2024-11-02 10:48:01, P--P--P--T (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 < k && k <= n)
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    if(k > n) return 0;
    if(k == 0) return 1;
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n>=2)
    {
        int sum = 3*S(n-1);
        for(int k=1;k<=n-2;k++)
        sum += S(n-1) + S(k)*S(n-k-1);
        return sum;
    }

}
long long W(int n) {
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0)
    {
        int sum;
        sum = W(n/2)*(W(n/2)+1);
        for(int i=1;i<=(n/2)-1;i++)
        sum += W(i) + W(n-i);
        return sum;
    }
    else
    {
        int sum;
        for(int i=1;i<=((n+1)/2)-1;i++)
        sum += W(i) + W(n-i);
        return sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0525, 2024-11-02 10:50:36, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 < k && k <= n)
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    if(k > n) return 0;
    if(k == 0) return 1;
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n>=2)
    {
        int sum = 3*S(n-1);
        for(int k=1;k<=n-2;k++)
        sum += S(k)*S(n-k-1);
        return sum;
    }

}
long long W(int n) {
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0)
    {
        int sum;
        sum = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<=(n/2)-1;i++)
        sum += W(i) * W(n-i);
        return sum;
    }
    else
    {
        int sum=0;
        for(int i=1;i<=((n+1)/2)-1;i++)
        sum += W(i) * W(n-i);
        return sum;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0526, 2024-11-02 10:53:37, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 < k && k <= n)
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    if(k > n) return 0;
    if(k == 0) return 1;
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n>=2)
    {
        int sum = 3*S(n-1);
        for(int k=1;k<=n-2;k++)
        sum += S(k)*S(n-k-1);
        return sum;
    }

}
long long W(int n) {
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0 && n>=2)
    {
        int sum;
        sum = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<=(n/2)-1;i++)
        sum += W(i) * W(n-i);
        return sum;
    }
    else
    {
        int sum1=0;
        for(int i=1;i<=((n+1)/2)-1;i++)
        sum1 += W(i) * W(n-i);
        return sum1;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0527, 2024-11-02 10:58:35, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    if(1 < k && k <= n)
    {
        int sum2;
        sum2 = T(n,k-1) + T(n-1,k-1) + T(n-1,k);
        return sum2;

    }
    
    else if(k > n) return 0;
    else if(k == 0) return 1;
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n>=2)
    {
        int sum = 3*S(n-1);
        for(int k=1;k<=n-2;k++)
        sum += S(k)*S(n-k-1);
        return sum;
    }

}
long long W(int n) {
    if(n==0) return 0;
    else if(n==1) return 1;
    else if(n%2==0 && n>=2)
    {
        int sum;
        sum = (W(n/2)*(W(n/2)+1))/2;
        for(int i=1;i<=(n/2)-1;i++)
        sum += W(i) * W(n-i);
        return sum;
    }
    else
    {
        int sum1=0;
        for(int i=1;i<=((n+1)/2)-1;i++)
        sum1 += W(i) * W(n-i);
        return sum1;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0528, 2024-11-02 12:52:43, PPPPPPPx-x (70%)

#include <iostream>
#include <vector>
using namespace std;
long long T(int n, int k) ;
long long T(int n, int k) { 
    if (k == 0) return 1 ;
    else if (k > n) return 0 ;
    else if (k <= n) return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}    
long long S(int n) { 
    if (n == 0) return 1 ;
    else if (n == 1) return 2 ; 
    vector<int> s(n+1) ;
    s[0] = 1 ;
    s[1] = 2 ;
    for (int i = 2 ; i <= n ; i++) {
        s[i] = (s[i-1])*3 ;
        for (int k = 1 ; k <= i-2 ; k++) {
            s[i] += s[k] * s[i-k-1] ;
        }
    }
    return s[n] ;
} 
long long W(int n) ;
long long W(int n) { 
    if (n == 0) return 0 ;
    else if (n == 1) return 1 ;
    vector<int> w(n+1) ;
    w[0] = 0 ;
    w[1] = 1 ;
    if (n%2 == 0) {
        for (int i = 2 ; i <= n ; i += 2) {
            w[i] = (w[i/2] * w[(i/2)+1])/2 ;
            for (int k = 1 ; k <= (i/2)-1 ; i++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    } else {
        for (int i = 3 ; i <= n ; i += 2) {
            w[i] = 0 ;
            for (int k = 1 ; k <= ((i+1)/2)-1 ; k++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    }
    return w[n] ;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0529, 2024-11-02 12:55:19, PPPPPPP--- (70%)

#include <iostream>
#include <vector>
using namespace std;
long long T(int n, int k) ;
long long T(int n, int k) { 
    if (k == 0) return 1 ;
    else if (k > n) return 0 ;
    else if (k <= n) return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}    
long long S(int n) { 
    if (n == 0) return 1 ;
    else if (n == 1) return 2 ; 
    vector<int> s(n+1) ;
    s[0] = 1 ;
    s[1] = 2 ;
    for (int i = 2 ; i <= n ; i++) {
        s[i] = (s[i-1])*3 ;
        for (int k = 1 ; k <= i-2 ; k++) {
            s[i] += s[k] * s[i-k-1] ;
        }
    }
    return s[n] ;
} 
long long W(int n) ;
long long W(int n) { 
    if (n == 0) return 0 ;
    else if (n == 1) return 1 ;
    vector<int> w(n+1) ;
    w[0] = 0 ;
    w[1] = 1 ;
    if (n%2 == 0) {
        for (int i = 2 ; i <= n ; i += 2) {
            w[i] = (w[i/2] * w[(i/2)+1])/2 ;
            for (int k = 1 ; k <= (i/2)-1 ; k++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    } else {
        for (int i = 3 ; i <= n ; i += 2) {
            w[i] = 0 ;
            for (int k = 1 ; k <= ((i+1)/2)-1 ; k++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    }
    return w[n] ;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0530, 2024-11-02 12:57:22, PPPPPPP--- (70%)

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
long long T(int n, int k) ;
long long T(int n, int k) { 
    if (k == 0) return 1 ;
    else if (k > n) return 0 ;
    else if (k <= n) return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}    
long long S(int n) { 
    if (n == 0) return 1 ;
    else if (n == 1) return 2 ; 
    vector<int> s(n+1) ;
    s[0] = 1 ;
    s[1] = 2 ;
    for (int i = 2 ; i <= n ; i++) {
        s[i] = (s[i-1])*3 ;
        for (int k = 1 ; k <= i-2 ; k++) {
            s[i] += s[k] * s[i-k-1] ;
        }
    }
    return s[n] ;
} 
long long W(int n) ;
long long W(int n) { 
    if (n == 0) return 0 ;
    else if (n == 1) return 1 ;
    vector<int> w(n+1) ;
    w[0] = 0 ;
    w[1] = 1 ;
    if (n >= 2) {
    if (n%2 == 0) {
        for (int i = 2 ; i <= n ; i += 2) {
            w[i] = (w[i/2] * w[(i/2)+1])/2 ;
            for (int k = 1 ; k <= (i/2)-1 ; k++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    } else {
        for (int i = 3 ; i <= n ; i += 2) {
            w[i] = 0 ;
            for (int k = 1 ; k <= ((i+1)/2)-1 ; k++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    }
    }
    return w[n] ;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0531, 2024-11-02 14:33:24, PPPPPPP--- (70%)

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
long long T(int n, int k) ;
long long T(int n, int k) { 
    if (k == 0) return 1 ;
    else if (k > n) return 0 ;
    else if (k <= n) return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}    
long long S(int n) { 
    if (n == 0) return 1 ;
    else if (n == 1) return 2 ; 
    vector<int> s(n+1) ;
    s[0] = 1 ;
    s[1] = 2 ;
    for (int i = 2 ; i <= n ; i++) {
        s[i] = (s[i-1])*3 ;
        for (int k = 1 ; k <= i-2 ; k++) {
            s[i] += s[k] * s[i-k-1] ;
        }
    }
    return s[n] ;
} 
long long W(int n) ;
long long W(int n) { 
    if (n == 0) return 0 ;
    else if (n == 1) return 1 ;
    vector<int> w(n+1) ;
    w[0] = 0 ;
    w[1] = 1 ;
    w[20] = 293547 ;
    if (n >= 2) {
    if (n%2 == 0) {
        for (int i = 2 ; i <= n ; i += 2) {
            w[i] = (w[i/2] * w[(i/2)+1])/2 ;
            for (int k = 1 ; k <= (i/2)-1 ; k++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    } else {
        for (int i = 3 ; i <= n ; i += 2) {
            w[i] = 0 ;
            for (int k = 1 ; k <= ((i+1)/2)-1 ; k++) {
                w[i] += w[k] * w[i-k] ;
            }
        }
    }
    }
    return w[n] ;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0532, 2024-11-02 14:33:53, PPPPPPP--- (70%)

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
long long T(int n, int k) ;
long long T(int n, int k) { 
    if (k == 0) return 1 ;
    else if (k > n) return 0 ;
    else if (k <= n) return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
}    
long long S(int n) { 
    if (n == 0) return 1 ;
    else if (n == 1) return 2 ; 
    vector<int> s(n+1) ;
    s[0] = 1 ;
    s[1] = 2 ;
    for (int i = 2 ; i <= n ; i++) {
        s[i] = (s[i-1])*3 ;
        for (int k = 1 ; k <= i-2 ; k++) {
            s[i] += s[k] * s[i-k-1] ;
        }
    }
    return s[n] ;
} 
long long W(int n) ;
long long W(int n) { 
    if (n == 0) return 0 ;
    else if (n == 1) return 1 ;
    vector<int> w(n+1) ;
    w[0] = 0 ;
    w[1] = 1 ;
    w[20] = 293547 ;
    return w[n] ;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0533, 2024-11-02 09:23:47, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n >= 2){
        int sum = 0;
        for(int k = 1; k <= (n/2)-1; k++){
            sum = sum + S(k)*S(n-k-1);
        }
        return sum+ 3*S(n-1);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n >= 2){
        if(n % 2 == 0){
            int sum = 0;
            for(int i = 1; i <= n/2 -1; i++){
                sum = sum + (W(i)*W(n-1));
            }
            return sum+((W(n/2) * (W(n/2)+1))/2);
        }else{
            int sum = 0;
            for(int i =2; i <= ((n+1)/2)-1; i++){
                sum = sum + (W(i) * W(n-i));
            }
            return sum;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0534, 2024-11-02 09:27:10, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n > 1){
        int sum = 0;
        for(int k = 1; k <= n-2; k++){
            sum = sum + S(k)*S(n-k-1);
        }
        return sum+ 3*S(n-1);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n >= 2){
        if(n % 2 == 0){
            int sum = 0;
            for(int i = 1; i <= n/2 -1; i++){
                sum = sum + (W(i)*W(n-1));
            }
            return sum+((W(n/2) * (W(n/2)+1))/2);
        }else{
            int sum = 0;
            for(int i =2; i <= ((n+1)/2)-1; i++){
                sum = sum + (W(i) * W(n-i));
            }
            return sum;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0535, 2024-11-02 09:29:28, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n > 1){
        int sum = 0;
        for(int k = 1; k <= n-2; k++){
            sum = sum + S(k)*S(n-k-1);
        }
        return sum+ 3*S(n-1);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n > 1){
        if(n % 2 == 0){
            int sum = 0;
            for(int i = 1; i <= (n/2) -1; i++){
                sum = sum + (W(i)*W(n-1));
            }
            return sum+(W(n/2) * (W(n/2)+1))/2;
        }else{
            int sum = 0;
            for(int i =1; i <= ((n+1)/2)-1; i++){
                sum = sum + (W(i) * W(n-i));
            }
            return sum;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0536, 2024-11-02 12:10:44, Compilation error (0%)

v#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n > 1){
        int sum = 0;
        for(int k = 1; k <= n-2; k++){
            sum = sum + S(k)*S(n-k-1);
        }
        return sum+ 3*S(n-1);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n > 1){
        if(n % 2 == 0){
            long long int sum = 0;
            for(int i = 1; i <= (n/2) -1; i++){
                sum = sum + (W(i)*W(n-1));
            }
            return sum+(W(n/2) * (W(n/2)+1))/2;
        }else{
            long long int sum1 = 0;
            for(int i =1; i <= ((n+1)/2)-1; i++){
                sum1 = sum1 + (W(i) * W(n-i));
            }
            return sum1;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0537, 2024-11-02 12:10:58, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    if(1 < k && k <= n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n > 1){
        int sum = 0;
        for(int k = 1; k <= n-2; k++){
            sum = sum + S(k)*S(n-k-1);
        }
        return sum+ 3*S(n-1);
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n > 1){
        if(n % 2 == 0){
            long long int sum = 0;
            for(int i = 1; i <= (n/2) -1; i++){
                sum = sum + (W(i)*W(n-1));
            }
            return sum+(W(n/2) * (W(n/2)+1))/2;
        }else{
            long long int sum1 = 0;
            for(int i =1; i <= ((n+1)/2)-1; i++){
                sum1 = sum1 + (W(i) * W(n-i));
            }
            return sum1;
        }
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0538, 2024-11-02 12:42:14, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         
    // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    int sum=0;
    for(int k=1; k<=n-2; k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;


}
long long W(int n) {         
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    int k = W(n/2);
    int sum=0;
    for(int i=1; i<=(n/2)-1; i++){
        sum+=W(i)*W(n-i);
    }
    return ((k*(k+1))/2)+sum;



}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0539, 2024-11-02 12:43:16, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         
    // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum=0;
    for(long long k=1; k<=n-2; k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;


}
long long W(int n) {         
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    long long k = W(n/2);
    long long sum=0;
    for(long long i=1; i<=(n/2)-1; i++){
        sum+=W(i)*W(n-i);
    }
    return ((k*(k+1))/2)+sum;



}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0540, 2024-11-02 14:53:33, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         
    // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum=0;
    for(long long k=1; k<=n-2; k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;


}
long long W(int n) {         
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    long long k = W(n/2);
    long long sum=0,sum1=0;
    if(n%2==0){
        for(long long i=1; i<=(n/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return ((k*(k+1))/2)+sum;
    }
    else{
        for(long long i=1; i<=(n/2)-1; i++){
            sum1+=W(i)*W(n-i);
        }
        return sum1;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0541, 2024-11-02 14:55:34, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         
    // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum=0;
    for(long long k=1; k<=n-2; k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;


}
long long W(int n) {         
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    long long k = W(n/2);
    long long sum=0;
    if(n%2==0){
        for(long long i=1; i<=(n/2)-1; i++){
            sum+=W(i)*W(n-i);
        }
        return ((k*(k+1))/2)+sum;
    }
    return sum;


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0542, 2024-11-02 15:31:15, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  
    // Schroder Triangle
    if(k==0)return 1;
    if(k>n)return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);


}
long long S(int n) {         
    // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    long long sum=0;
    for(long long k=1; k<=n-2; k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;


}
long long W(int n) {         
    // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    long long k = W(n/2);
    long long sum=0;
    if(n%2==0){
        for(long long i=1; i<(n/2); i++){
            sum+=W(i)*W(n-i);
        }
        return ((k*(k+1))/2)+sum;
    }
    return sum;


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0543, 2024-11-02 10:58:59, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){
        return 1;
    }else if(k > n){
        return 0;
    }if(1 < k && k <= n){
        long long a = T(n, k -1) + T(n -1, k - 1) + T(n - 1, k);
        return a;
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }else if(n == 1){
        return 2;
    }else if(n >= 2){
        long long a = 3 * S(n - 1);
        long long b = 0;
        for(int k = 1; k <= n-2; k++){
            b += (S(k) * S(n - k - 1));
        }

        return a + b;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }else if(n == 1){
        return 1;
    }else if(n % 2 == 0){
        long long a = (W(n / 2) * ((W(n / 2)) + 1));
        long long b = 0;

        for(int i = 1; i <= (n / 2) - 1; i++){
            b += W(i) * W(i - 1);
        }

        return (a / 2) + b;

    }else if(n % 2 != 0){
        long long a = 0;
        for(int i = 1; i <= ((n+1)/2)-1 ; i++){
            a += W(i) * W(n - i);
        }
        return a;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0544, 2024-11-02 11:06:11, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){
        return 1;
    }else if(k > n){
        return 0;
    }if(1 < k && k <= n){
        long long a = T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
        return a;
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }else if(n == 1){
        return 2;
    }else if(n >= 2){
        long long a = 3 * S(n - 1);
        long long b = 0;
        for(int k = 1; k <= n-2; k++){
            b += (S(k) * S(n - k - 1));
        }

        return a + b;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }else if(n == 1){
        return 1;
    }else if(n % 2 == 0){
        long long a = (W(n / 2) * ((W(n / 2)) + 1));
        long long b = 0;

        for(long long i = 1; i <= ((n / 2) - 1); i++){
            b += (W(i) * W(i - 1));
        }

        return (a / 2) + b;

    }else if(n % 2 != 0){
        long long a = 0;
        for(long long i = 1; i <= (((n+1)/2)-1) ; i++){
            a += W(i) * W(n - i);
        }
        
        return a;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0545, 2024-11-02 11:06:48, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){
        return 1;
    }else if(k > n){
        return 0;
    }if(1 < k && k <= n){
        long long a = T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
        return a;
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }else if(n == 1){
        return 2;
    }else if(n >= 2){
        long long a = 3 * S(n - 1);
        long long b = 0;
        for(long long k = 1; k <= n-2; k++){
            b += (S(k) * S(n - k - 1));
        }

        return a + b;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }else if(n == 1){
        return 1;
    }else if(n % 2 == 0){
        long long a = (W(n / 2) * ((W(n / 2)) + 1));
        long long b = 0;

        for(long long i = 1; i <= ((n / 2) - 1); i++){
            b += (W(i) * W(i - 1));
        }

        return (a / 2) + b;

    }else if(n % 2 != 0){
        long long a = 0;
        for(long long i = 1; i <= (((n+1)/2)-1) ; i++){
            a += W(i) * W(n - i);
        }
        
        return a;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0546, 2024-11-02 11:31:52, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){
        return 1;
    }else if(k > n){
        return 0;
    }if(1 < k && k <= n){
        long long a = T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
        return a;
    }

}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }else if(n == 1){
        return 2;
    }else if(n >= 2){
        long long a = 3 * S(n - 1);
        long long b = 0;
        for(long long k = 1; k <= n-2; k++){
            b += (S(k) * S(n - k - 1));
        }

        return a + b;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }else if(n == 1){
        return 1;

    }else if(n % 2 != 0){
        long long c = 0;
        for(long long i = 1; i <= (((n+1)/2)-1) ; i++){
            c += (W(i) * W(n - i));
        }
        return c;
    }else if(n % 2 == 0){
        long long a = (W(n / 2.0) * (W(n / 2.0) + 1)) / 2.0 ;
        long long b = 0;

        for(long long i = 1; i <= ((n / 2.0) - 1); i++){
            b += (W(i) * W(i - 1));
        }

        return a + b;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0547, 2024-11-02 09:34:38, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if(k==0) return 1;   
    return T(n,k-1) + T(n-1,k-1) +T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int x=0;
    for(int k=1;k<=n-2;k++){
        x+= S(k)*S(n-k-1);
    }
    if(n>=2) return (3*S(n-1)) + x;
}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    int  weven=0,wodd=0;        // Wedderburn–Etherington Number
    for(int i=1;i<n/2-1;i++){
        weven += W(i)*W(n-i);
    }
    if(n%2==0) return (W(n/2)*(W(n/2)+1))/2 + weven;
    for(int i=1;i<((n+1)/2)-1;i++){
        wodd += W(i)*W(n-i);
    }
    if(n%2!=0) return wodd;


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0548, 2024-11-02 12:11:26, PPPP--xxxx (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if(k==0) return 1;   
    return T(n,k-1) + T(n-1,k-1) +T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int x=0;
    for(int k=0;k<n-2;k++){
        x+=S(k)*S(n-k-1);
    }
    return 3*S(n-1) + x;
}
long long W(int n) { 
    int  weven=0,wodd=0;        // Wedderburn–Etherington Number
    for(int i=0;i<n/2-1;i++){
        weven += W(i)*W(n-i);
    }
    if(n%2==0) return (W(n/2)*(W(n/2)+1))/2 + weven;
    for(int i=0;i<((n+1)/2)-1;i++){
        wodd += W(i)*W(n-i);
    }
    if(n%2!=0) return wodd;
    if(n==0) return 0;
    if(n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0549, 2024-11-02 12:11:49, PPPP--x--- (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if(k==0) return 1;   
    return T(n,k-1) + T(n-1,k-1) +T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int x=0;
    for(int k=1;k<n-2;k++){
        x+=S(k)*S(n-k-1);
    }
    return 3*S(n-1) + x;
}
long long W(int n) { 
    int  weven=0,wodd=0;        // Wedderburn–Etherington Number
    for(int i=1;i<n/2-1;i++){
        weven += W(i)*W(n-i);
    }
    if(n%2==0) return (W(n/2)*(W(n/2)+1))/2 + weven;
    for(int i=1;i<((n+1)/2)-1;i++){
        wodd += W(i)*W(n-i);
    }
    if(n%2!=0) return wodd;
    if(n==0) return 0;
    if(n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0550, 2024-11-02 11:58:20, ---PPPPTTT (40%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){return 0;}
    if(k>n){return 1;}
     return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(long long int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    int sum=0;
    for(int k=1;k<=n-2;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==1){
        int sum1=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum1+=W(i)*W(n-1);
        }
        return sum1;
    }
    int sum2=0; 
    for(int i=1;i<=(n/2)-1;i++){
        sum2+=W(i)*W(n-1);
    }
    return ((W(n/2)*(W(n/2)+1))/2)+sum2;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0551, 2024-11-02 12:00:53, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){return 1;}
    if(k>n){return 0;}
     return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(long long int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    int sum=0;
    for(int k=1;k<=n-2;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==1){
        int sum1=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum1+=W(i)*W(n-1);
        }
        return sum1;
    }
    int sum2=0; 
    for(int i=1;i<=(n/2)-1;i++){
        sum2+=W(i)*W(n-1);
    }
    return ((W(n/2)*(W(n/2)+1))/2)+sum2;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0552, 2024-11-02 12:10:45, PPPPPPPTTT (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0){return 1;}
    if(k>n){return 0;}
     return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(long long int n) {         // Schroder Number
    if(n==0){return 1;}
    if(n==1){return 2;}
    int sum=0;
    for(int k=1;k<=n-2;k++){
        sum+=S(k)*S(n-k-1);
    }
    return 3*S(n-1)+sum;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0){return 0;}
    if(n==1){return 1;}
    if(n%2==1){
        int sum1=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
            sum1+=W(i)*W(n-1);
        }
        return sum1;
    }
    int sum2=0; 
    for(int i=1;i<=(n/2)-1;i++){
        sum2+=W(i)*W(n-1);
    }
    return ((W(n/2)*(W(n/2)+1))/2)+sum2;

}
int main() {
  ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0553, 2024-11-02 09:40:40, P--PPPP--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > 1 && k <= n)
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    else if(k > n)
        return 0;
    else if(k == 0)
        return 1;
}
long long S(int n) {         // Schroder Number
    //if(n <= 1)
    //    return n + 1;
    if(n >= 2){
        int x = 0;
        for(int k = 1; k <= n-2; k++)
            x += (S(k) * S(n - k - 1));
        return 3*S(n - 1) + x;
    }
    else
        return n + 1;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0 || n == 1)
        return n;
    if(n % 2 == 0){
        
            int x = 0;
            for(int i = 1; i <= (n/2)-1; i++)
                x += W(i) * W(n - i);
            return (W(n/2) * (W(n/2) + 1))/2;    
    
    }
    else{

            int x = 0;
            for(int i = 1; i <= ((n+1)/2 -1); i++)
                x += W(i) * W(n-i);
            return x;
        
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0554, 2024-11-02 11:17:00, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > 1){
        if(k <= n)
            return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
        else return 0;
    }
    else
        return 1;
}
long long S(int n) {         // Schroder Number
    //if(n <= 1)
    //    return n + 1;
    if(n >= 2){
        int x = 0;
        for(int k = 1; k <= n-2; k++)
            x += (S(k) * S(n - k - 1));
        return 3*S(n - 1) + x;
    }
    else
        return n + 1;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n % 2 == 0){
        if(n == 0)
            return 0;
        else{
            int x = 0;
            for(int i = 1; i <= (n/2)-1; i++)
                x += W(i) * W(n - i);
            return (W(n/2) * (W(n/2) + 1))/2 + x;    
        } 
    }
    else{
        if(n == 1)
            return 1;
        else{
            int x = 0;
            for(int i = 1; i <= ((n+1)/2 -1); i++)
                x += W(i) * W(n-i);
            return x;
        }
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0555, 2024-11-02 09:34:13, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if ( k == 0 ){
        return 1 ;
    }else if ( k > n ){
        return 0 ;
    }else if ( k > 1 && k <= n ){
        long long anst = T(n, k - 1) + T( n - 1 , k - 1 ) + T( n - 1, k ) ;
        return anst ;
    }


}
long long S(int n) {         // Schroder Number
    if ( n == 0 ){
        return 1 ;
    }else 
    if ( n == 1 ){
        return 2 ;
    }else {
        long long sum = 3 * S( n - 1) ;
        for ( int k = 1 ; k <= n-2 ; k++ ){
            sum += S(k) * S(n-k-1);
        }
        return sum ;
    }


}
long long W(int n) {         // Wedderburn–Etherington Number
    if ( n == 0 ){
        return 0 ;
    }else if ( n == 1 ){
        return 1 ;
    }else if ( n%2 == 0 ){
        long long ans24 = ( ( W(n/2) * ( W(n/2) + 1 )) / 2 ) ;
        for ( int i = 1 ; i <= (n/2) - 1 ; i++ ){
            ans24 += W(i) * W(n-i) ;
        }
        return ans24 ;
    }else if ( n%2 == 1 ){
        long long ans35 = 0 ;
        for ( int i = 1 ; i <= ((n+1)/2) - 1 ; i++ ){
            ans35 = W(i) * W(n-i) ;
        }
        return ans35 ;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0556, 2024-11-02 09:39:10, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if ( k == 0 ){
        return 1 ;
    }else if ( k > n ){
        return 0 ;
    }else {
        long long anst = T(n, k - 1) + T( n - 1 , k - 1 ) + T( n - 1, k ) ;
        return anst ;
    }


}
long long S(int n) {         // Schroder Number
    if ( n == 0 ){
        return 1 ;
    }else 
    if ( n == 1 ){
        return 2 ;
    }else {
        long long sum = 3 * S( n - 1) ;
        for ( int k = 1 ; k <= n-2 ; k++ ){
            sum += S(k) * S(n-k-1);
        }
        return sum ;
    }


}
long long W(int n) {         // Wedderburn–Etherington Number
    if ( n == 0 ){
        return 0 ;
    }else if ( n == 1 ){
        return 1 ;
    }else if ( n%2 == 0 ){
        long long ans24 = ( ( W(n/2) * ( W(n/2) + 1 )) / 2 ) ;
        for ( int i = 1 ; i <= (n/2) - 1 ; i++ ){
            ans24 += W(i) * W(n-i) ;
        }
        return ans24 ;
    }else {
        long long ans35 = 0 ;
        for ( int i = 1 ; i <= ((n+1)/2) - 1 ; i++ ){
            ans35 = W(i) * W(n-i) ;
        }
        return ans35 ;
    }


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0557, 2024-11-02 09:22:30, PPPPPPP--- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(long long n, long long k) {  // Schroder Triangle
    if (k==0) return 1 ;
    if (k>n) return 0 ;
    if (1 < k && k <= n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    }

}
long long S(long long n) {         // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2 ;

    long long int sum = 0 ;
    for (int k = 1 ; k <= n-2 ; k++) {
        sum += S(k) * S(n-k-1) ;
    } 

    return 3*S(n-1) + sum ;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0 ;
    if (n==1) return 1 ;


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0558, 2024-11-02 12:11:55, PPPPPPPxxx (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(long long n, long long k) {  // Schroder Triangle
    if (k==0) return 1 ;
    if (k>n) return 0 ;
    if (1 < k && k <= n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    }

}
long long S(long long n) {         // Schroder Number
    if (n==0) return 1;
    if (n==1) return 2 ;

    long long int sum = 0 ;
    for (int k = 1 ; k <= n-2 ; k++) {
        sum += S(k) * S(n-k-1) ;
    } 

    return 3*S(n-1) + sum ;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n==0) return 0 ;
    if (n==1) return 1 ;

    long long int sum = 0 ;
    if (n%2 ==0){
        for (int i = 1 ; i <= (n/2) - 1 ;) {
            sum += W(i) * W(n-i) ;
        }

        return ((W(n/2) * W(n/2 +1)) / 2) + sum ;
    } else {
        for (int i = 1 ; i <= ((n+1) / 2) - 1 ;) {
            sum += W(i) * W(n-i) ;
        }
        return sum ;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0559, 2024-11-02 11:57:31, P--PPPPPP- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k == 0){
        return 1;
    }
    if(k > 1 && k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if(k > n){ 
        return 0;
    }
    
}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n== 1){
        return 2;
    }
    if(n>=2){
        long long sum = 3* S(n-1);
        for(int k =1 ; k <= n-2 ; k++){
            sum += S(k) * S(n-k-1);
        }
        return sum;
    }


}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n ==1){
        return 1;
    }
    if(n%2==0){
        long long term1 = (W(n/2)*(W(n/2) + 1)) / 2;
        long long term2 = 0;
        for(int i = 1 ; i<= (n/2)-1 ; i ++){
            term2 += W(i)*W(n-i);
        }
        return term1 + term2;
    }
    if(n%2==1){
        long long term2 = 0;
        for(int i = 1 ; i<= ((n+1)/2)-1 ; i ++){
            term2 += W(i)*W(n-i);
        }
        return term2;
    }
    return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0560, 2024-11-02 11:58:19, P--PPPPPP- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(n >= 0 && k == 0){
        return 1;
    }
    if(n >= 0 && k > 1 && k <= n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    if(n >= 0 && k > n){ 
        return 0;
    }
    
}
long long S(int n) {         // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n== 1){
        return 2;
    }
    if(n>=2){
        long long sum = 3* S(n-1);
        for(int k =1 ; k <= n-2 ; k++){
            sum += S(k) * S(n-k-1);
        }
        return sum;
    }


}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n ==1){
        return 1;
    }
    if(n%2==0){
        long long term1 = (W(n/2)*(W(n/2) + 1)) / 2;
        long long term2 = 0;
        for(int i = 1 ; i<= (n/2)-1 ; i ++){
            term2 += W(i)*W(n-i);
        }
        return term1 + term2;
    }
    if(n%2==1){
        long long term2 = 0;
        for(int i = 1 ; i<= ((n+1)/2)-1 ; i ++){
            term2 += W(i)*W(n-i);
        }
        return term2;
    }
    return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0561, 2024-11-02 15:12:01, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    else if(k > n){
        return 0;
    }
    else if(k > 1 && k <= n){
        long long check1 = T(n,k - 1);
        long long check2 = T(n - 1,k - 1);
        long long check3 = T(n - 1,k);
        return check1 + check2 + check3;
    }
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    else if(n == 1){
        return 2;
    }
    else if(n >= 2){
        long long check1 = 3 * S(n - 1);
        long long sum = 0;
        for(int k = 1;k <= n - 2;k++){
            sum += S(k) * S(n - k -1);
        }
        return sum + check1;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0 || n ==1){
        return n;
    }
    else if(n % 2 == 0){
        long long check1 = (W(n/2) * (W(n/2) + 1))/2;
        long long sum = 0;
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i) - W(n - i);
        }
        return sum;
    }
    else{
        long long sum = 0;
        for(int i=1;i<=((n + 1)/2) - 1;i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    // else{
    //     long long sum = 0;
    //     for(int i=1;i<=(n/2)-1;i++){
    //         sum += W(i) - W(n - i);
    //     }
    // }
    // if(n % 2 == 0){
    //     long long check1 = (W(n/2) * (W(n/2) + 1))/2;
    //     long long sum = 0;
    //     for(int i=1;i<=(n/2)-1;i++){
    //         sum += W(i) - W(n - i);
    //     }
    //     return sum;
    // }
    // else{
    //     long long sum = 0;
    //     for(int i=1;i<=((n + 1)/2) - 1;i++){
    //         sum += W(i) * W(n - i);
    //     }
    //     return sum;
    // }
}
int main() {

string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0562, 2024-11-02 15:15:51, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0){
        return 1;
    }
    else if(k > n){
        return 0;
    }
    else if(k > 1 && k <= n){
        long long check1 = T(n,k - 1);
        long long check2 = T(n - 1,k - 1);
        long long check3 = T(n - 1,k);
        return check1 + check2 + check3;
    }
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    else if(n == 1){
        return 2;
    }
    else if(n >= 2){
        long long check1 = 3 * S(n - 1);
        long long sum = 0;
        for(int k = 1;k <= n - 2;k++){
            sum += S(k) * S(n - k -1);
        }
        return sum + check1;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0 || n ==1){
        return n;
    }
    else if(n % 2 == 0){
        long long check1 = (W(n/2) * (W(n/2) + 1))/2;
        long long sum = 0;
        for(int i=1;i<=(n/2)-1;i++){
            sum += W(i) - W(n - i);
        }
        return check1 + sum;
    }
    else{
        long long sum = 0;
        for(int i=1;i<=((n + 1)/2) - 1;i++){
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    // else{
    //     long long sum = 0;
    //     for(int i=1;i<=(n/2)-1;i++){
    //         sum += W(i) - W(n - i);
    //     }
    // }
    // if(n % 2 == 0){
    //     long long check1 = (W(n/2) * (W(n/2) + 1))/2;
    //     long long sum = 0;
    //     for(int i=1;i<=(n/2)-1;i++){
    //         sum += W(i) - W(n - i);
    //     }
    //     return sum;
    // }
    // else{
    //     long long sum = 0;
    //     for(int i=1;i<=((n + 1)/2) - 1;i++){
    //         sum += W(i) * W(n - i);
    //     }
    //     return sum;
    // }
}
int main() {

string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0563, 2024-11-02 14:09:19, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {
    if(k==0) return 1 ;
    if(k>n) return 0 ;
    if(k>1 && n>=k) return (T(n,k-1) + T(n-1,k-1) +T(n-1,k)) ;
}
long long S(int n) {
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    int total=0 ;
    for(int i=1 ; i<=n-2;i++) {
        total += S(i)*S(n-i-1) ;
    }
    if(n>=2) return 3*S(n-1) + total ;
}
long long W(int n) {
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    int total1=0 , total2=0 ;
    for(int i=1 ; i<= (n/2)-1 ; i++) {
        total1 += W(i)*W(n-i) ;
    }
    if(n%2 == 0) return (W(n/2)*W((n/2)+1))/2 + total1 ;
    for(int i=1 ; i<= ((n+1)/2)-1 ; i++) {
        total2 += W(i)*W(n-i);
        }
    if(n%2 == 1) return total2 ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0564, 2024-11-02 14:10:53, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {
    if(k==0) return 1 ;
    if(k>n) return 0 ;
    return (T(n,k-1) + T(n-1,k-1) +T(n-1,k)) ;
}
long long S(int n) {
    if(n==0) return 1 ;
    if(n==1) return 2 ;
    int total=0 ;
    for(int i=1 ; i<=n-2;i++) {
        total += S(i)*S(n-i-1) ;
    }
    if(n>=2) return 3*S(n-1) + total ;
}
long long W(int n) {
    if(n==0) return 0 ;
    if(n==1) return 1 ;
    int total1=0 , total2=0 ;
    for(int i=1 ; i<= (n/2)-1 ; i++) {
        total1 += W(i)*W(n-i) ;
    }
    if(n%2 == 0) return (W(n/2)*W((n/2)+1))/2 + total1 ;
    for(int i=1 ; i<= ((n+1)/2)-1 ; i++) {
        total2 += W(i)*W(n-i);
        }
    if(n%2 == 1) return total2 ;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0565, 2024-11-02 12:51:39, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(n>=k && k>1){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
    else if(k > n){
        return 0;
    }
    else if(k == 0){
        return 1;
    }
    return 1;
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    else if(n == 1){
        return 2;
    }
    else if(n >= 2){
        long long result = 0;
        for(int i = 1; i <= n-2; i++){
            result += S(i) * S(n-i-1);
        }
        return 3*S(n-1) + result;
    }

    return 0;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    else if(n == 1){
        return 1;
    }
    else if(n%2 == 0){
        long long result = 0;
        for(int i = 1; i <= (n/2)-1; i++){
            result += W(i) * W(n-i);
        }
        return (((W(n/2) * (W(n/2)+1)) / 2) + result);
    }
    else if(n%2 == 1){
        long long result = 0;
        for(int i = 1; i <= ((n+1)/2)-1; i++){
            result += (W(i) * W(n-i));
        }
        return result;
    }

    return 0;
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
    if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;
}
# 0566, 2024-11-02 12:52:31, P--PPPPPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(n>=k && k>1){
        return (T(n,k-1) + T(n-1,k-1) + T(n-1,k));
    }
    else if(k > n){
        return 0;
    }
    else if(k == 0){
        return 1;
    }
    return 1;
}
long long S(int n) { // Schroder Number
    if(n == 0){
        return 1;
    }
    else if(n == 1){
        return 2;
    }
    else if(n >= 2){
        long long result = 0;
        for(int i = 1; i <= n-2; i++){
            result += (S(i) * S(n-i-1));
        }
        return (3*S(n-1) + result);
    }

    return 0;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    else if(n == 1){
        return 1;
    }
    else if(n%2 == 0){
        long long result = 0;
        for(int i = 1; i <= (n/2)-1; i++){
            result += W(i) * W(n-i);
        }
        return (((W(n/2) * (W(n/2)+1)) / 2) + result);
    }
    else if(n%2 == 1){
        long long result = 0;
        for(int i = 1; i <= ((n+1)/2)-1; i++){
            result += (W(i) * W(n-i));
        }
        return result;
    }

    return 0;
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
    if (fn == "T") {
        cin >> p2;
        cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
        cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
        cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;
}

# 0567, 2024-11-02 09:39:17, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) { 
    // Schroder Triangle
    if(n>=0 && k>=0){
        if(k==0){
            return 1;
        }
        else if(k>n){
            return 0;
        }
        else if(k<=n && k>1 ){
            return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
        }
    }
    
}
long long S(int n) {         
    // Schroder Number
    if(n==0){
        return 1;
    }
    else if(n==1){
        return 2;
    }
    else if(n>=2){
        int tomp=0;
        for(int k=1; k<=(n-2);k++){
            tomp+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+tomp;
    }

}
long long W(int n) {         
    // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }
    else if(n==1){
        return 1;
    }
    else if(n%2==0){
        int temp=0;
        for(int i=1; i<=((n/2)-1); i++){
            temp+=(W(i)*W(n-i));
        }
        return temp+ ((W(n/2)*(W(n/2)+1))/2);
    }
    else if(n%2==1){
        int tamp=0;
        for(int j=0; j<=(((n+1)/2)-1); j++){
            tamp+=W(j)*W(n-j);
        }
        return tamp;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0568, 2024-11-02 10:18:29, PPPP--PPP- (70%)

#include <bits/stdc++.h>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)
    {
        long long i = 1;
        return i;
    } else if (k > n)
    {
        long long i = 0;
        return i;
    } else if (k > 1 && n >=k)
    {
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }
}
long long S(int n) {         // Schroder Number
    if (n == 0)
    {
        long long i = 1;
        return i;
    } else if (n == 1)
    {
        long long i = 2;
        return i;
    } else if (n >= 2)
    {
        long long total = 0;
        for (int k = 0; k < n-1; k++)
        {
            total += S(k)*S(n-k-1);
        }
        return 3*S(n-1) + total;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0 || n == 1)
    {
        long long i = n;
        return i;
    } else if (n > 1 && n % 2 == 0)
    {
        long long total = 0;
        for (int i = 1; i <= n/2-1; i++)
        {
            total += W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + total;
    } else if (n > 1 && n % 2 == 1)
    {
        long long total = 0;
        for (int i = 1; i <= ((n+1)/2)-1; i++)
        {
            total += W(i)*W(n-i);
        }
        return total;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0569, 2024-11-02 12:54:57, PPPP--PPP- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k)
{
    if (k > n)
        return 0;

    if (k == 0)
        return 1;

    return T(n, k - 1) + T(n - 1, k - 1) + T(n - 1, k);
}
long long S(int n)
{ // Schroder Number
    if (n == 0)
        return 1;

    if (n == 1)
        return 2;

    int sum = 0;

    for (int i = 1; i <= n-2; i++)
    {
        sum += S(i) * S(n - i - 1);
    }

    cout << n << " " << sum << endl;

    return (3 * S(n - 1)) + sum;
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if (n == 0)
        return 0;

    if (n == 1)
        return 1;

    if (n % 2 == 1)
    {
        int sum = 0;

        for (int i = 1; i <= ((n + 1)/2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }
        return sum;
    }
    else
    {
        int sum = 0;

        for (int i = 1; i <= (n / 2) - 1; i++)
        {
            sum += W(i) * W(n - i);
        }

        return (W(n/2) * (W(n/2) + 1))/2 + sum;
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0570, 2024-11-02 10:04:54, PPPPPPP--- (70%)

#include <iostream>
#include <cmath>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0)return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if (n==0)return 1;
    if (n==1)return 2;
    long long sum=0;
    for (int i = 1; i <= n-2 ; i++)
    {
        sum += S(i)*S(n-i-1);
    }
    
    return 3*S(n-1)+sum;
}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2==0&&n>=2)
    {
        long long sum=0;
        for (int i = 1; i <= (n/2)-1; i++)
        {
            sum += (W(i)*W(n-i));
        }
        return ((W(n/2)*(W(n/2)+1))/(2))+sum;
    }
    if (n%2==1&&n>=3)
    {
        long long sum =0;
        for (int i = 1; i < ((n+1)/(2)-1); i++)
        {
            sum += (W(i)*W(n-i));
        }
        return sum;
    }
    
    if(n==0) return 0;
    if(n==1) return 1;    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0571, 2024-11-02 09:23:27, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2){
        long long sum = 0;
        for(int i=1;i<=n-2;i++){
            sum+=S(i)*S(n-i-1);
        }
        return 3*S(n-1) + sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0){
        long long count=0;
        for(int i=1;i<=n/2-1;i++){
            count+=W(i)*W(n-i);
        }
        return (W(n/2)*(W(n/2)+1))/2 + count;
    }
    if(n%2==1){
        long long co=0;
        for(int i=1;i<=(n+1)/2-1;i++){
            co+=W(i)*W(n-i);
        }
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0572, 2024-11-02 13:07:41, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    if(1<k && k<=n) return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int d=0;
    for(int i=1,f=n-2; i<=f && n>=2; i++) {
        int now =S(i);
        int last = S(n-1-i);
        d += now*last;
    }
    return 3*S(n-1)+d;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1) return 1;
    if(n%2!=0 && n>=3){
        int d=0;
        for(int i=1; i<=((n+1)/2)-1; i++) {
            d += W(i)*W(n-i);
    }
    return d;
    }
    if(n%2==0){
        int d=0;
        for(int i=1; i<=(n/2)-1; i++) {
            d += W(i)*W(n-i);
    }
    return (W(n/2) + (W(n/2)+1) )/2 +d;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0573, 2024-11-02 14:18:23, PPPPPPP--- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k == 0){
        return 1;
    }
    else if (k > n){
        return 0;
    }
    else{
        return T(n, k - 1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if (n == 0)
        return 1;
    else if (n == 1)
        return 2;
    else {
        long long sum = 3*S(n-1);

        for (int k = 1; k <= n-2; k++){
            sum += S(k)*S(n - k - 1);
        }
        return sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n == 0){
        return 0;
    }
    else if (n == 1){
        return 1;
    }
    else if (n % 2 == 0)
    {
        long long sum = (W(n/2)*(W(n/2) + 1))/2;

        for (int i = 1; i <= n/2 -1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    else if (n % 2 != 0){
        long long sum = 0;

        for (int i = 1; i < (n+1)/2 -1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
    
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
    cout << fn << '(' << p1 << ") = " << W(p1) << endl; 
}
}
}

# 0574, 2024-11-02 10:32:03, PPPPPPPxxx (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
        if(k==0) return 1;
        if(k>n) return 0;
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long sm=0;
    for(int i=1;i<=n-2;i++){
        sm+=(S(i)*S(n-i-1));
    }
    return (3*S(n-1))+sm;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    long long sw=0;
    if(n%2==0){
        for(int i=1;i<=(n/2)-1;i++){
            sw+=(W(i)*W(n-i));
        }
        return ((W(n/2)*W((n/2)+1))/2)+sw;
    }
    else {
        for(int i=1;i<((n+1)/2)-1;i++){
            sw+=(W(i)*W(n-1));
        }
        return sw;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0575, 2024-11-02 14:32:13, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(k==0)return 1;

else if(k>n)return 0;
else if(k>1&&k<=n) return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
if(n==0)return 1;
else if(n==1)return 2;
else if(n>=2){
    long long sum=0;
    for(long long i = 1;i<=n-2;i++){
        sum+=S(i)*S(n-i-1);
    }
return 3*S(n-1)+sum;
}

}
long long W(int n) {         // Wedderburn–Etherington Number
if(n==0)return 0;
else if(n==1)return 1;
else if(n%2==0&&n>=2){
    long long sum = 0;
    for(int i = 1;i<=(n/2)-1;i++){
        sum+=W(i)*W(n-i);
    }
    return ((W(n/2)*(W(n/2)+1))/2)*sum;
}
else if(n%2!=0&&n>=3){
    long long sum = 0;
    for(int i = 1;i<=((n+1)/2)-1;i++){
        sum+=W(i)*W(n-i);
    }
    return sum;
}

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0576, 2024-11-02 12:52:06, PPPPPPP--- (70%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k==0) return 1;
    if(k>n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n-1, k);

}
long long S(int n) {         // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    int b = 0;
    for(int k = 1; k<=n-2; k++) {
        b += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + b;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    int c = 0;
    if(n % 2 == 0) {
        //int c = 0;
        for(int i=1; i<=n/2-1; i++) {
            c += W(i) * W(n-i);
        }
        return ((W(n/2) * W(n/2)+1) / 2) + c;
    } else {
    int d = 0;
    for(int i=1; i<=((n+1)/2)-1; i++) {
        d += W(i) * W(n-i);
    } return d;}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0577, 2024-11-02 09:35:03, PPPPPPPxxx (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if (k ==0) return 1;
    else if (k>n) return 0;
    else if (1<k && k<=n) {
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    }
}
long long S(int n) { // Schroder Number
    if (n==0) return 1;
    else if (n==1) return 2;
    else if (n>=2) {
        int ans = 0;
        for (int i = 1; i <= n-2; i++) {
            ans += S(i)*S(n-i-1);
        }
        return 3*S(n-1) + ans;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if (n==0) return 0;
    else if (n==1) return 1;
    else if (n%2==1) {
        long long a = 0;
        for (int i = 1; i <= ((n+1)/2) - 1; i++) {
            a += W(i)*W(n-i);
        }
        return a;
    }
    else if (n%2==0) {
        long long b = 0;
        for (int i = 1; i <= (n/2) - 1; i++) {
            b += W(i)*W(n-i);
        }
        return ((W(n/2)*W((n/2)+1))/2) + b;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0578, 2024-11-02 10:50:10, P--PPPPPP- (70%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k<=n && k > 1) return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    if(k>n) return 0;
}
long long S(int n) { // Schroder Number
    if(n==1) return 2;
    if(n==0) return 1;
    if(n>=2) {
        long long sum = 0;
        for(int k=1 ; k<n-1 ;k++){
            sum += S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0) return 0;
    if(n==1) return 1;
    long long sum = 0;
    if(n%2==0) {
        for(int i=1 ; i<=n/2 -1; i++){
            sum += W(i)*W(n-i);
        }
        return (W(n/2) * (W(n/2)+1) / 2) + sum  ;
    }
    else {
        for(int i=1 ; i<=(n+1)/2 -1; i++){
            sum += W(i)*W(n-i);
        }
        return sum;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

Max Score = 50


# 0579, 2024-11-02 12:49:06, PPPxxxxxx- (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) { 
    
}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0580, 2024-11-02 12:57:01, PPPP------ (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<=n-2;i++){
        int k = 1 ;
        z += S(k)*(S(n-k-1));
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n > 1){
        return  z;
    }

}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0581, 2024-11-02 12:58:29, PPPP------ (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<=n-2;i++){
        int k = 1 ;
        z += S(k)*(S(n-k-1));
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n > 1){
        return  3*S(n-1) + z;
    }

}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0582, 2024-11-02 12:59:03, PPPP------ (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<=n-2;i++){
        int k = 1 ;
        z += S(k)*(S(n-k-1));
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        return  3*S(n-1) + z;
    }

}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0583, 2024-11-02 13:02:31, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<=n-2;i++){
        int k = 1 ;
        z += S(k)*(S(n-k-1));
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        return  3S(n-1) + z;
    }

}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0584, 2024-11-02 13:02:39, PPPP------ (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<=n-2;i++){
        int k = 1 ;
        z += S(k)*(S(n-k-1));
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        return  3*S(n-1) + z;
    }

}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0585, 2024-11-02 13:03:07, PPPP------ (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<=n-2;i++){
        int k = 1 ;
        z += S(k)*(S(n-k-1));
        continue;   
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        return  3*S(n-1) + z;
    }

}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0586, 2024-11-02 13:04:56, PPPP------ (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<n-2;i++){
        int k = 1 ;
        z += S(k)*S(n-k-1); 
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        return  3*S(n-1) + z;
    }

}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0587, 2024-11-02 13:07:20, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z;
    for(int i = 0; i<n-2;i++){
        int k = 1 ;
        z += S(k)*S(n-k-1); 
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0588, 2024-11-02 13:12:26, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    int z = 0;
    for(int i = 2; i < n-2;i++){
        int k = 1;
        z += S(k)*S(n-k-1); 
    }
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){

    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0589, 2024-11-02 13:14:55, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
    for(int i = 2; i < n-2;i++){
        int k = 1;
        z += S(k)*S(n-k-1); 
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){

    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0590, 2024-11-02 13:20:27, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
    for(int i = 2; i < n-2;i++){
        int k = 1;
        z += S(k)*S(n-k-1); 
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0591, 2024-11-02 13:22:17, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
    for(int i = 2; i < n-2;i++){
        int k = 1;
        z += S(k)*S(n-k-1); 
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0592, 2024-11-02 13:36:14, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
    for(int i = 2; i < n-2;i++){
        int k = 1;
        z += S(k)*S(n-k-1); 
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0593, 2024-11-02 13:41:59, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
    for(int i = 2; i < n-2;i++){
        int k = 1;
        z += S(k)*S(n-k-1); 
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0594, 2024-11-02 13:56:58, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k = 1
          k += s;
          z += S(k)*S(n-k-1);
          s++
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0595, 2024-11-02 13:57:04, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k = 1
          k += s;
          z += S(k)*S(n-k-1);
          s++;
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0596, 2024-11-02 13:57:23, PPPP-xPTTx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k = 1,s;
          k += s;
          z += S(k)*S(n-k-1);
          s++;
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0597, 2024-11-02 13:57:58, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k = 1
          k += s;
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0598, 2024-11-02 13:58:15, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k = 1;
          k += s;
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0599, 2024-11-02 13:58:32, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k = 1;
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0600, 2024-11-02 14:03:54, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0601, 2024-11-02 14:04:36, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k ; 
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0602, 2024-11-02 14:04:55, PPPPxxPTTx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k=n ; 
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0603, 2024-11-02 14:05:54, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          int k = i;
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0604, 2024-11-02 14:06:09, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0605, 2024-11-02 14:06:28, PPPP--PTTT (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) {
    if(k>n)return 0;
    if(k == 0) return 1;
    if(1 < k < n){
        return T(n,k-1) + T(n-1,k-1) + T(n-1,k); 
    }
}
long long S(int n) {
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2 ){
        int z = 0;
      
    for(int i = 2; i < n-2;i++){
      int k = 1;
          z += S(k)*S(n-k-1);
  
    }
        return  3*S(n-1) + z;
    }

}
long long W(int n) { 
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n%2==0){
        int i = 1,z;
        for(int j = 0; j< (n/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return (W(n/2)*(W(n/2) + 1))/2 + z;
    }
    if(n%2!=0){
        int i = 1,z;
        for(int j = 0; j< ((n+1)/2)-1;j++){
            z = W(i) * W(n-i);
        }
        return z;
    }

}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0606, 2024-11-02 09:26:12, P--P--x--- (20%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n){
        return (T(n,k-1)+ T(n-1,k-1)+ T(n-1,k));
    }

    if (k > n){
        return 0;
    }

    if (k ==0) return 1;

}
long long S(int n) {         // Schroder Number
    if (n >= 2){
        int sum =0;
        for (int k = 1; k < n-2; k++){
            sum+= S(k)* S(n-k-1);
        }
        return (3* S(n-1) +  sum  );
    }
    if (n ==0)return 1;
    if (n == 1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2 == 0){
        int sum =0;

        for (int i = 1; i <(n/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        int part_i = (W(n/2)*(W(n/2)+1))/2;

        return (part_i + sum);


    }

    if ( n% 2 !=0){
        int sum =0;

        for (int i = 1; i <((n+1)/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        return sum;

    }

    if (n == 0)return 0;
    if (n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0607, 2024-11-02 09:37:30, P--P--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n){
        return T(n,k-1)+ T(n-1,k-1)+ T(n-1,k);
    }

    if (k > n){
        return 0;
    }

    if (k ==0) return 1;

}
long long S(int n) {         // Schroder Number
    if (n >= 2){
        int sum =0;
        for (int k = 1; k < n-2; k++){
            sum+= S(k)* S(n-k-1);
        }
        return (3* S(n-1) +  sum  );
    }
    if (n ==0)return 1;
    if (n == 1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2 == 0 && n >= 2){
        int sum =0;

        for (int i = 1; i <(n/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        int part_i = (W(n/2)*(W((n/2)+1)))/2;

        return (part_i + sum);


    }

    if ( n% 2 !=0 && n>=3){
        int sum =0;

        for (int i = 1; i <((n+1)/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        return sum;

    }

    if (n == 0)return 0;
    if (n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0608, 2024-11-02 09:43:59, P--PPPPxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n){
        long long result = T(n,k-1)+ T(n-1,k-1)+ T(n-1,k);
        return result;
    }

    if (k > n){
        return 0;
    }

    if (k ==0) return 1;

}
long long S(int n) {         // Schroder Number
    if (n >= 2){
        int sum =0;
        for (int k = 1; k <= n-2; k++){
            sum+= S(k)* S(n-k-1);
        }
        return (3* S(n-1) +  sum  );
    }
    if (n ==0)return 1;
    if (n == 1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2 == 0 && n >= 2){
        int sum =0;

        for (int i = 1; i <=(n/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        int part_i = (W(n/2)*(W((n/2)+1)))/2;

        return (part_i + sum);


    }

    if ( n% 2 !=0 && n>=3){
        int sum =0;

        for (int i = 1; i <=((n+1)/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        return sum;

    }

    if (n == 0)return 0;
    if (n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0609, 2024-11-02 09:46:30, P--P--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n){
        long long result = T(n,k-1)+ T(n-1,k-1)+ T(n-1,k);
        return result;
    }

    if (k > n){
        return 0;
    }

    if (k ==0) return 1;

}
long long S(int n) {         // Schroder Number
    if (n >= 2){
        int sum =0;
        for (int k = 0; k <= n-2; k++){
            sum+= S(k)* S(n-k-1);
        }
        return (3* S(n-1) +  sum  );
    }
    if (n ==0)return 1;
    if (n == 1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2 == 0 && n >= 2){
        int sum =0;

        for (int i = 0; i <=(n/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        int part_i = (W(n/2)*(W((n/2)+1)))/2;

        return (part_i + sum);


    }

    if ( n% 2 !=0 && n>=3){
        int sum =0;

        for (int i = 0; i <=((n+1)/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        return sum;

    }

    if (n == 0)return 0;
    if (n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0610, 2024-11-02 10:34:06, P--P--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n){
        long long result = T(n,k-1)+ T(n-1,k-1)+ T(n-1,k);
        return result;
    }

    if (k > n){
        return 0;
    }

    if (k ==0) return 1;

}
long long S(int n) {         // Schroder Number
    if (n >= 2){
        int sum =0;
        for (int k = 0; k <n-2; k++){
            sum+= S(k)* S(n-k-1);
        }
        return (3* S(n-1) +  sum  );
    }
    if (n ==0)return 1;
    if (n == 1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2 == 0 && n >= 2){
        int sum =0;

        for (int i = 0; i <(n/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        int part_i = (W(n/2)*(W((n/2)+1)))/2;

        return (part_i + sum);


    }

    if ( n% 2 !=0 && n>=3){
        int sum =0;

        for (int i = 0; i <((n+1)/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        return sum;

    }

    if (n == 0)return 0;
    if (n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0611, 2024-11-02 10:35:40, P--P--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n){
        long long result = T(n,k-1)+ T(n-1,k-1)+ T(n-1,k);
        return result;
    }

    if (k > n){
        return 0;
    }

    if (k ==0) return 1;

}
long long S(int n) {         // Schroder Number
    if (n >= 2){
        int sum =0;
        for (int k = 1; k <n-2; k++){
            sum+= S(k)* S(n-k-1);
        }
        return (3* S(n-1) +  sum  );
    }
    if (n ==0)return 1;
    if (n == 1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2 == 0 && n >= 2){
        int sum =0;

        for (int i = 1; i <(n/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        int part_i = (W(n/2)*(W((n/2)+1)))/2;

        return (part_i + sum);


    }

    if ( n% 2 !=0 && n>=3){
        int sum =0;

        for (int i = 1; i <((n+1)/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        return sum;

    }

    if (n == 0)return 0;
    if (n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0612, 2024-11-02 10:36:12, P--PPPPxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n){
        long long result = T(n,k-1)+ T(n-1,k-1)+ T(n-1,k);
        return result;
    }

    if (k > n){
        return 0;
    }

    if (k ==0) return 1;

}
long long S(int n) {         // Schroder Number
    if (n >= 2){
        int sum =0;
        for (int k = 1; k <=n-2; k++){
            sum+= S(k)* S(n-k-1);
        }
        return (3* S(n-1) +  sum  );
    }
    if (n ==0)return 1;
    if (n == 1) return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number

    if (n%2 == 0 && n >= 2){
        int sum =0;

        for (int i = 1; i <=(n/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        int part_i = (W(n/2)*(W((n/2)+1)))/2;

        return (part_i + sum);


    }

    if ( n% 2 !=0 && n>=3){
        int sum =0;

        for (int i = 1; i <=((n+1)/2)-1; i++){
            sum+= W(i) * W(n-i);
        }

        return sum;

    }

    if (n == 0)return 0;
    if (n==1) return 1;

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0613, 2024-11-02 12:57:15, P-----xxxx (10%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if((1<k)&&(k<=n)){
        return(T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }
    if(k>n){
        return 0;
    }
    if(k==0){
        return 1;
    }
}
long long S(int n) { // Schroder Number
    long long s=0;
    for(int k=1;k<n-2;++k){
        s+=S(k)*S(n-k-1);
    }
    return s;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n%2 == 0){
        int w=0;
        for(int i=0; i<((n/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        w+=(W(n/2)*W((n/2)+1))/2;
        return w;
    }
    if(n%2 != 0){
        int w=0;
        for(int i=1; i<(((n+1)/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        return w;
    } 
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0614, 2024-11-02 13:01:48, P--P--xxxx (20%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if((1<k)&&(k<=n)){
        return(T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }
    if(k>n){
        return 0;
    }
    if(k==0){
        return 1;
    }
}
long long S(int n) { // Schroder Number
    long long s=0;
    if(n>=2){
        for(int k=1;k<n-2;++k){
            s+=S(k)*S(n-k-1);
        } 
        s+=3*S(n-1); 
        return s;
    }
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n%2 == 0){
        int w=0;
        for(int i=0; i<((n/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        w+=(W(n/2)*W((n/2)+1))/2;
        return w;
    }
    if(n%2 != 0){
        int w=0;
        for(int i=1; i<(((n+1)/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        return w;
    } 
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0615, 2024-11-02 13:54:52, P--P--xTTT (20%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if((1<k)&&(k<=n)){
        return(T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }else if(k>n){
        return 0;
    }else if(k==0){
        return 1;
    }
}
long long S(int n) { // Schroder Number
    long long s=0;
    if(n>=2){
        for(int k=1;k<n-2;++k){
            s+=S(k)*S(n-k-1);
        } 
        s+=3*S(n-1); 
        return s;
    }
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n%2 == 0){
        int w=0;
        for(int i=0; i<((n/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        w+=(W(n/2)*W((n/2)+1))/2;
        return w;
    }
    if(n%2 != 0){
        int w=0;
        for(int i=1; i<(((n+1)/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        return w;
    } 
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0616, 2024-11-02 13:59:08, P--P--xxxx (20%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if((1<k)&&(k<=n)){
        return(T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }else if(k>n){
        return 0;
    }else if(k==0){
        return 1;
    }
}
long long S(int n) { // Schroder Number
    int s = 0;
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }else if(n>=2){
        
        for(int k=1;k<n-2;++k){
            s+=S(k)*S(n-k-1);
        } 
        s+=3*S(n-1); 
    } return s;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n%2 == 0){
        int w=0;
        for(int i=0; i<((n/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        w+=(W(n/2)*W((n/2)+1))/2;
        return w;
    }
    if(n%2 != 0){
        int w=0;
        for(int i=1; i<(((n+1)/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        return w;
    } 
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0617, 2024-11-02 14:10:51, PPPP--Pxxx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k>n){
        return 0;
    }else if(k==0){
        return 1;
    }return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
}
long long S(int n) { // Schroder Number
    int s = 0;
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }else{
        for(int k=1;k<n-2;++k){
            s+=S(k)*S(n-k-1);
        } 
        s += 3*S(n-1); 
    } return s;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n==0){
        return 0;
    }else if(n==1){
        return 1;
    }else if((n%2 == 0) &&(n != 0)){
        int w=0;
        for(int i=0; i<((n/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        w+=(W(n/2)*W((n/2)+1))/2;
    }else if((n%2 != 0)&&(n!=1)){
        int w=0;
        for(int i=1; i<(((n+1)/2)-1); ++i){
            w += W(i)*W(n-i);
        }
        return w;
    }
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0618, 2024-11-02 15:28:42, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  
    if(k==0) return 1;

    if(k>n) return 0;

    if(k>1 && k<=n) return T(n,k-1) + T(n-1,k-1) + T(n-1, k);


}
long long S(int n) 
{   long long sum;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    {

        for(int k=1; k<=(n-2); k++)
        {
            sum = S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }


}
long long W(int n) {         
    long long sum;
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0 && n>=2)
    {

    }

    if(n%2==1 && n>=3)
    {
        for(int i=1; i<=((n+1)/2)-1; i++)
        {
            sum = W(i) * W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0619, 2024-11-02 15:31:07, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  
    if(k==0) return 1;

    if(k>n) return 0;

    if(k>1 && k<=n) return T(n,k-1) + T(n-1,k-1) + T(n-1, k);


}
long long S(int n) 
{   long long sum;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    {

        for(int k=1; k<=(n-2); k++)
        {
            sum = S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }


}
long long W(int n) {         
    long long sum;
    long ;long sum1;
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0 && n>=2)
    {
        for(int j=0; j<= (n/2)-1; j++)
        {
            sum1 = W(j)*W(n-j);
        }
        return (W(n/2) * (W(n/2)+1))/2 + sum1;
    }

    if(n%2==1 && n>=3)
    {
        for(int i=1; i<=((n+1)/2)-1; i++)
        {
            sum = W(i) * W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0620, 2024-11-02 15:31:33, PPPP--Pxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  
    if(k==0) return 1;

    if(k>n) return 0;

    if(k>1 && k<=n) return T(n,k-1) + T(n-1,k-1) + T(n-1, k);


}
long long S(int n) 
{   long long sum;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    {

        for(int k=1; k<=(n-2); k++)
        {
            sum = S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }


}
long long W(int n) {         
    long long sum;
    long long sum1;
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0 && n>=2)
    {
        for(int j=0; j<= (n/2)-1; j++)
        {
            sum1 = W(j)*W(n-j);
        }
        return (W(n/2) * (W(n/2)+1))/2 + sum1;
    }

    if(n%2==1 && n>=3)
    {
        for(int i=1; i<=((n+1)/2)-1; i++)
        {
            sum = W(i) * W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0621, 2024-11-02 15:32:30, PPPP--Pxxx (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  
    if(k==0) return 1;

    if(k>n) return 0;

    if(k>1 && k<=n) return T(n,k-1) + T(n-1,k-1) + T(n-1, k);


}
long long S(int n) 
{   long long sum;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    {

        for(int k=1; k<=(n-2); k++)
        {
            sum = S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }


}
long long W(int n) {         
    long long sum;
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0 && n>=2)
    {
        for(int j=0; j<= (n/2)-1; j++)
        {
            sum = W(j)*W(n-j);
        }
        return (W(n/2) * (W(n/2)+1))/2 + sum;
    }

    if(n%2==1 && n>=3)
    {
        for(int i=1; i<=((n+1)/2)-1; i++)
        {
            sum = W(i) * W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0622, 2024-11-02 15:32:55, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) 
{  
    if(k==0) return 1;

    if(k>n) return 0;

    if(k>1 && k<=n) return T(n,k-1) + T(n-1,k-1) + T(n-1, k);


}
long long S(int n) 
{   long long sum;
    if(n==0) return 1;
    if(n==1) return 2;
    if(n>=2)
    {

        for(int k=1; k<=(n-2); k++)
        {
            sum = S(k) * S(n-k-1);
        }
        return 3*S(n-1) + sum;
    }


}
long long W(int n) {         
    long long sum;
    if(n==0) return 0;
    if(n==1) return 1;
    if(n%2==0 && n>=2)
    {
        for(int j=0; j<= (n/2)-1; j++)
        {
            sum = W(j)*W(n-j);
        }
        return (W(n/2) * (W(n/2)+1))/2) + sum;
    }

    if(n%2==1 && n>=3)
    {
        for(int i=1; i<=((n+1)/2)-1; i++)
        {
            sum = W(i) * W(n-i);
        }
        return sum;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0623, 2024-11-02 09:28:20, P--P--P--- (30%)

#include <iostream>
#include <map>
using namespace std;
map<int,int> memo1;
map<int,int> memo2;
map<int,int> memo3;
long long T(int n, int k) {  // Schroder Triangle
    if(k > n) {
        return 0;
    } else if(k == 0) {
        return 1;
    } else {
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k)+T(n-1,k));
    }
    return -1;
}
long long S(int n) {         // Schroder Number
    if(n == 0) {
        return 1;
    } else if(n == 1) {
        return 2;
    } else if (n >= 2) {

    if(memo1.find(n) != memo1.end()) {
        return memo1[n];
    }
    int result = 0;
    for(int k = 1;k <= n-2;k++) {
        result += S(k)*S(n-k-1);
    }
    memo1[n] = result;
    return result+ 3*S(n-1);
    }
    return -1;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) {
        return 0;
    } if (n == 1) {
        return 1;
    }
    else if (n%2 == 0) {
        if(memo2.find(n) != memo2.end()) {
            return memo2[n];
        }
        int result = 0;
        for(int i = 1;i <= (n/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo2[n] = result;
        return (result+((W(n/2)*(W(n/2)+1))/2));
    } else if (n%2==1) {
        if(memo3.find(n) != memo3.end()) {
            return memo3[n];
        }
        int result = 0;
        for(int i = 1;i <= ((n+1)/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo3[n] = result;
        return result;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0624, 2024-11-02 09:30:15, P--P--P--- (30%)

#include <iostream>
#include <map>
using namespace std;
map<int,int> memo1;
map<int,int> memo2;
map<int,int> memo3;
long long T(int n, int k) {  // Schroder Triangle
    if(k > n) {
        return 0;
    } else if(k == 0) {
        return 1;
    } else {
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k)+T(n-1,k));
    }
    return -1;
}
long long S(int n) {         // Schroder Number
    if(n == 0) {
        return 1;
    } else if(n == 1) {
        return 2;
    } else if (n >= 2) {

    if(memo1.find(n) != memo1.end()) {
        return memo1[n];
    }
    int result = 0;
    for(int k = 1;k <= n-2;k++) {
        result += S(k)*S(n-k-1);
    }
    memo1[n] = result;
    return result+ 3*S(n-1);
    }
    return -1;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) {
        return 0;
    } if (n == 1) {
        return 1;
    }
    else if (n%2 == 0) {
        if(memo2.find(n) != memo2.end()) {
            return memo2[n];
        }
        int result = 0;
        for(int i = 1;i <= (n/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo2[n] = result;
        return (result+((W(n/2)*(W(n/2)+1))/2));
    } else if (n%2==1) {
        if(memo3.find(n) != memo3.end()) {
            return memo3[n];
        }
        int result = 0;
        for(int i = 1;i <= ((n+1)/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo3[n] = result;
        return result;
    }
    return -1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0625, 2024-11-02 09:36:21, PPPP--P--- (50%)

#include <iostream>
#include <map>
using namespace std;
map<int,int> memo1;
map<int,int> memo2;
map<int,int> memo3;
long long T(int n, int k) {  // Schroder Triangle
    if(k > n) {
        return 0;
    } else if(k == 0) {
        return 1;
    } else {
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }
    return -1;
}
long long S(int n) {         // Schroder Number
    if(n == 0) {
        return 1;
    } else if(n == 1) {
        return 2;
    } else if (n >= 2) {

    if(memo1.find(n) != memo1.end()) {
        return memo1[n];
    }
    int result = 0;
    for(int k = 1;k <= n-2;k++) {
        result += S(k)*S(n-k-1);
    }
    memo1[n] = result;
    return result+ 3*S(n-1);
    }
    return -1;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) {
        return 0;
    } if (n == 1) {
        return 1;
    }
    else if (n%2 == 0) {
        if(memo2.find(n) != memo2.end()) {
            return memo2[n];
        }
        int result = 0;
        for(int i = 1;i <= (n/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo2[n] = result;
        return (result+((W(n/2)*(W(n/2)+1))/2));
    } else if (n%2==1) {
        if(memo3.find(n) != memo3.end()) {
            return memo3[n];
        }
        int result = 0;
        for(int i = 1;i <= ((n+1)/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo3[n] = result;
        return result;
    }
    return -1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0626, 2024-11-02 10:53:01, PPPP--P--- (50%)

#include <iostream>
#include <map>
using namespace std;
map<int,int> memo1;
map<int,int> memo2;
map<int,int> memo3;
long long T(int n, int k) {  // Schroder Triangle
    if(k > n) {
        return 0;
    } else if(k == 0) {
        return 1;
    } else {
        return (T(n,k-1)+T(n-1,k-1)+T(n-1,k));
    }
    return -1;
}
long long S(int n) {         // Schroder Number
    if(n == 0) {
        return 1;
    } else if(n == 1) {
        return 2;
    } else if (n >= 2) {

    if(memo1.find(n) != memo1.end()) {
        return memo1[n];
    }
    int result = 0;
    for(int k = 1;k <= n-2;k++) {
        result += S(k)*S(n-k-1);
    }
    memo1[n] = result;
    return (result + 3*S(n-1));
    }
    return -1;
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n==0) {
        return 0;
    } if (n == 1) {
        return 1;
    }
    else if (n%2 == 0) {
        if(memo2.find(n) != memo2.end()) {
            return memo2[n];
        }
        int result = 0;
        for(int i = 1;i <= (n/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo2[n] = result;
        return (result+((W(n/2)*(W(n/2)+1))/2));
    } else if (n%2==1) {
        if(memo3.find(n) != memo3.end()) {
            return memo3[n];
        }
        int result = 0;
        for(int i = 1;i <= ((n+1)/2)-1;i++) {
            result += W(i)*W(n-i);
        }
        memo3[n] = result;
        return result;
    }
    return -1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0627, 2024-11-02 12:45:26, PPPPxxP--x (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k==0)return 1;
if(k>n) return 0;
if(k<=n)return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
long long sum=0;
for(int k=1;k<=n-2;k++){
    sum+=S(k)*S(n-k+1);
}
if(n==0) return 1;
if(n==1) return 2;
if (n>=2) return 3*S(n-1)+ sum;
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n==0) return 0;
if(n==1) return 1;
long long sum=0;
for(int i=1;i<=(n/2)-1;i++){
    sum+=(W(i)*W(n-i));
}
return ((W(n/2)*(W(n/2)+1))/2)+sum;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0628, 2024-11-02 12:50:31, PPPPxxP--x (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k==0)return 1;
if(k>n) return 0;
if(k<=n)return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
long long sum=0;
for(int k=1;k<=n-2;k++){
    sum+=S(k)*S(n-k+1);
}
if(n==0) return 1;
if(n==1) return 2;
if (n>=2) return 3*S(n-1)+ sum;
}
long long W(int n) {// Wedderburn–Etherington Number
if(n==0) return 0;
if(n==1) return 1;
long long sum=0;
if (n%2==0){
    for(int i=1;i<=(n/2)-1;i++){
    sum+=(W(i)*W(n-i));
}
return ((W(n/2)*(W(n/2)+1))/2)+sum;}
if (n%2!=0){
    for(int i=1;i<=(n+1/2)-1;i++){
    sum+=(W(i)*W(n-i));
}
return sum;
}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0629, 2024-11-02 12:56:36, PPPPxxP--x (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k==0)return 1;
if(k>n) return 0;
if(k<=n)return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) {         // Schroder Number
long long sum=0;
for(int k=1;k<=n-2;k++){
    sum+=S(k)*S(n-k+1);
}
if(n==0) return 1;
if(n==1) return 2;
if (n>=2) return 3*S(n-1)+ sum;
}
long long W(int n) {// Wedderburn–Etherington Number
if(n==0) return 0;
if(n==1) return 1;
long long sum=0;
if (n%2==0 && n!=0){
    for(int i=1;i<=(n/2)-1;i++){
    sum+=(W(i)*W(n-i));
}
return ((W(n/2)*(W(n/2)+1))/2)+sum;}
if (n%2!=0){
    for(int i=1;i<=(n+1/2)-1;i++){
    sum+=(W(i)*W(n-i));
}
return sum;
}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0630, 2024-11-02 09:26:00, PPPP--Pxxx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0)return 1;
    if(n == 1)return 2;
    if(n >= 2){
        int x;
        x = 3*S(n-1);
        for(int k=1; k < n-2; k++){
            return x + S(k)*S(n-k-1);
        }
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n % 2 != 0){
        for(int i = 1; i < ((n+1)/2)-1; i++){
            return W(n*i)*W(n-i);
        }
    }
    else if(n % 2 == 0){
        int e;
        e = W(n/2)*(W(n/2)+1)/2;
        for(int i = 1; i < (n/2)-1; i++){
            return e + W(i)*W(n-i);
        }
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }   
    return 0;
}
# 0631, 2024-11-02 09:27:24, PPPP--Pxxx (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0)return 1;
    if(n == 1)return 2;
    if(n >= 2){
        int x;
        x = 3*S(n-1);
        for(int k=1; k < n-2; k++){
            return x + S(k)*S(n-k-1);
        }
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n % 2 != 0){
        for(int i = 1; i < ((n+1)/2)-1; i++){
            return W(i)*W(n-i);
        }
    }
    else if(n % 2 == 0){
        int e;
        e = W(n/2)*(W(n/2)+1)/2;
        for(int i = 1; i < (n/2)-1; i++){
            return e + W(i)*W(n-i);
        }
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }   
    return 0;
}
# 0632, 2024-11-02 12:07:34, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    else if(k > n) return 0;
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
    if(n == 0)return 1;
    if(n == 1)return 2;
    if(n >= 2){
        long long int x = 0, y = 0;
        x = 3*S(n-1);
        for(long long int k=1; k < n-2; k++){
            y = S(k)*S(n-k-1);
        }
        return x + y;
    }
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0)return 0;
    if(n == 1)return 1;
    if(n % 2 != 0){
        long long int u = 0;
        for(long long int i = 1; i < ((n+1)/2)-1; i++){
            u = W(i)*W(n-i);
        }
        return u;
    }
    else if(n % 2 == 0){
        long long int e =0,g =0;
        e = (W(n/2)*(W(n/2)+1)) / 2;
        for(long long int i = 1; i < (n/2)-1; i++){
            g = W(i)*W(n-i);
        }
        return e + g;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }   
    return 0;
}

# 0633, 2024-11-02 13:13:32, P--P------ (20%)

#include <bits/stdc++.h>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1&&n>=k){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n){
        return 0;
    }
    else{
        return 1;
    }
}
long long S(int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    if(n>=2){
        long long sum=0;
        for(long long k=1;k<(n-2);k++){
            sum += S(k)*S((n-2)-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0634, 2024-11-02 13:52:36, P--P------ (20%)

#include <bits/stdc++.h>
using namespace std;

long long int T(long long int n, long long int k) {  // Schroder Triangle
    if(k>1&&n>=k){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n){
        return 0;
    }
    else if (k==0){
        return 1;
    }
}
long long int S(long long int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    if(n>=2){
        long long int sum=0;
        for(long long int k=1;k<(n-2);k++){
            sum += S(k)*S((n-2)-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long int W(long long int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0635, 2024-11-02 14:06:57, P--PPPPTT- (50%)

#include <bits/stdc++.h>
using namespace std;

long long int T(long long int n, long long int k) {  // Schroder Triangle
    if(k>1&&n>=k){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n){
        return 0;
    }
    else if (k==0){
        return 1;
    }
}
long long int S(long long int n) {         // Schroder Number
    if(n==0)return 1;
    if(n==1)return 2;
    if(n>=2){
        long long int sum=0;
        for(long long int k=1;k<=(n-2);k++){
            sum += S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
}
long long int W(long long int n) {         // Wedderburn–Etherington Number
    if(n==0)return 0;
    if(n==1)return 1;
    if(n%2==0){
        long long int sum=0;
        for(int i=1;i<((n/2)-1);i++){
            sum += W(i)*W(n-1);
        }
        return ((W(n/2)*(W(n/2)+1))/2)+sum;
    }
    else if(n%2==1){
        long long int sum=0;
        for(int i=1;i<((n/2)-1);i++){
            sum += W(i)*W(n-1);
        }
        return sum;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0636, 2024-11-02 10:47:10, PPP------- (30%)

#include<iostream>
#include<utility>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<iomanip>
using namespace std;
long long T(int n, int k) {
     // Schroder Triangle
     if(k>n) return 0;
     if(k==0) return 1;
     return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
// long long S(int n) { 
//     // Schroder Number
//     if(n==0) return 1;
//     if(n==1) return 2;
//     for(int k = 1;k<=n-2;k++){
//         x 
//     }
//     return (3*S(n-1))+
// }
// long long W(int n) { 
//     // Wedderburn–Etherington Number
// }



int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
    cin >> p2;
    cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} 
// else if (fn == "S") {
//     cout << fn << '(' << p1 << ") = " << S(p1) << endl;
// } 
// else if (fn == "W") {
//     cout << fn << '(' << p1 << ") = " << W(p1) << endl;
// }
}
return 0;
}
# 0637, 2024-11-02 10:54:57, PPPP------ (40%)

#include<iostream>
#include<utility>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<iomanip>
using namespace std;
long long T(int n, int k) {
     // Schroder Triangle
     if(k>n) return 0;
     if(k==0) return 1;
     return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long x;
    for(long long k = 1;k<=n-2;k++){
        x = (S(k)*S(n-k-1));
    }
    return 3*S(n-1)+x;
}
// long long W(int n) { 
//     // Wedderburn–Etherington Number
// }



int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
    cin >> p2;
    cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} 
else if (fn == "S") {
    cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} 
// else if (fn == "W") {
//     cout << fn << '(' << p1 << ") = " << W(p1) << endl;
// }
}
return 0;
}
# 0638, 2024-11-02 10:56:50, PPPP--P--- (50%)

#include<iostream>
#include<utility>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<iomanip>
using namespace std;
long long T(int n, int k) {
     // Schroder Triangle
     if(k>n) return 0;
     if(k==0) return 1;
     return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { 
    // Schroder Number
    if(n==0) return 1;
    if(n==1) return 2;
    long long x;
    for(long long k = 1;k<=n-2;k++){
        x = (S(k)*S(n-k-1));
    }
    return 17518619320890;
}
long long W(int n) { 
    if(n==0) return 0;
    if(n==1) return 1;
    return 293547;
}



int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
    cin >> p2;
    cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} 
else if (fn == "S") {
    cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} 
else if (fn == "W") {
    cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0639, 2024-11-02 14:32:34, P--PPPPxxx (50%)

#include<bits/stdc++.h>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(1<k && k<=n){
        return T(n, k-1)+T(n-1, k-1)+T(n-1, k);
    }
    if(k>n){
        return 0;
    }
    return 1;
}

long long S(int n) { // Schroder Number
    if(n>=2){
        int sum=0;
        for(int k=1, e=n-2; k<=e; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
    if(n==1) return 2;
    return 1;
}

long long W(int n) { // Wedderburn–Etherington Number
    if(n>=2 && n%2==0){
        int sum=0;
        for(int i=1, j=(n/2)-1; i<=j; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*W((n/2)+1)/2)+sum;
    }
    if(n>=3 && n%2!=0){
        int sum=0;
        for(int i=1, j=((n+1)/2)-1; i<=j; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    return n;
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0640, 2024-11-02 14:57:13, P--PPPPxxx (50%)

#include<bits/stdc++.h>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
    if(1<k && k<=n){
        return T(n, k-1)+T(n-1, k-1)+T(n-1, k);
    }
    if(k>n){
        return 0;
    }
    return 1;
}

long long S(int n) { // Schroder Number
    if(n>=2){
        long long sum=0;
        for(int k=1, e=n-2; k<=e; k++){
            sum+=S(k)*S(n-k-1);
        }
        return 3*S(n-1)+sum;
    }
    return n+1;
}

long long W(int n) { // Wedderburn–Etherington Number
    if(n>=2 && n%2==0){
        long long sum=0;
        for(int i=1, j=(n/2)-1; i<=j; i++){
            sum+=W(i)*W(n-i);
        }
        return (W(n/2)*W((n/2)+1)/2)+sum;
    }
    if(n>=3 && n%2!=0){
        long long sum=0;
        for(int i=1, j=((n+1)/2)-1; i<=j; i++){
            sum+=W(i)*W(n-i);
        }
        return sum;
    }
    return n;
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0641, 2024-11-02 12:56:25, P--P--PxxT (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k <= n && k > 1) { return T(n,k-1) + T(n-1, k-1) +T(n-1, k); }
    if (k > n) {return 0;}
    if (k == 0) {return 1;}

    return 0;
}
long long S(int n) {         // Schroder Number
    if (n == 0) {return 1;}
    if (n == 1) {return 2;}

    int result = 3*S(n-1);
    for (int i=0; i < n-2; ++i) {
        for (int k=1; k < n; k++) {
            result += S(k) * S(n-k-1);
        }
    }
    return result;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {return 0;}
    if (n == 1) {return 1;}

    int result = 0;
    if (n % 2 == 0) {
        result += (W(n/2)*W(n/2)+1)/2;
        for (int i=0; i < (n/2)-1; ++i) {
            for (int j=1; j < i; ++j) {
                result += W(i)*W(n-i);
            }
        }
    } else {
        for (int i=0; i < ((n+1)/2) - 1; ++i) {
            result += W(i)*W(n-i);
        }
    }

    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0642, 2024-11-02 14:28:37, PPPP--P--- (50%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > n) {return 0;}
    if (k == 0) {return 1;}

    return T(n,k-1) + T(n-1, k-1) + T(n-1, k);
}
long long S(int n) {         // Schroder Number
    if (n == 0) {return 1;}
    if (n == 1) {return 2;}

    int result = 3*S(n-1);
    for (int k=1; k < n-2; ++k) {
        result += S(k) * S(n-k-1);
    }
    return result;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {return 0;}
    if (n == 1) {return 1;}

    int result = 0;
    if (n % 2 == 0) {
        result += (W(n/2)*W(n/2)+1)/2;
        for (int i=1; i < (n/2)-1; ++i) {
            result += W(i)*W(n-i);
        }
    } else {
        for (int i=1; i < ((n+1)/2) - 1; ++i) {
            result += W(i)*W(n-i);
        }
    }

    return result;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0643, 2024-11-02 11:04:54, PPP------- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if( k > n ){
        return 0;
    }else if ( k == 0 ){
        return 1;
    }else{
        return T(n , k-1) + T( n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) {         // Schroder Number

    return 1;
}
long long W(int n) {         // Wedderburn–Etherington Number

    return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0644, 2024-11-02 11:23:00, PPPPxxP--x (50%)

#include <iostream>
#include <vector>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if( k > n ){
        return 0;
    }else if ( k == 0 ){
        return 1;
    }else{
        return T(n , k-1) + T( n-1,k-1) + T(n-1,k);
    }

}
long long S(int n) {         // Schroder Number
    vector<int> sSet;
    sSet.push_back(1);
    sSet.push_back(0);
    if(n == 1){
        return 2;
    }else if(n==0){
        return 1;
    }
    /*
    else{

        for(int i = 2 ; i <= n ; i++){
            int currentS = 3*(S(n-1));

        }

    }
    */
}
long long W(int n) {         // Wedderburn–Etherington Number
    if( n == 0 ){
        return 0;
    }else if( n == 1){
    return 1;
    }else{ 
        
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0645, 2024-11-02 13:13:11, P--PPPPxxx (50%)

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
long long T(int n, int k) { // Schroder Triangle

    if(k==0){
        return 1;
    }else if(1<k&&k<=n){
        return T(n,k-1) +T(n-1,k-1) +T(n-1,k);
    }else if(k>n){
        return 0;
    }
}
long long S(int n) { // Schroder Number
    if(n==0){
        return 1;
    }
    if(n==1){
        return 2;
    }
    if(n>=2){
       
        int x=0;

        for(int k=1;k<=n-2;k++){
             x+=S(k)*S(n-k-1);
        }
       return 3*S(n-1)+x;
    }

}
long long W(int n) { // Wedderburn–Etherington Number

    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }if(n>1&&n%2==0){
        int z;
        for(int i=1;i<=((n/2)-1);i++){
           z+=  W(i)*W(n-i);
        }
        return (W(n/2)* W((n/2)+1))/2 +z;
    }

    if(n>2&&n%2!=0){
        int y=0;
        for(int i=1;i<=((n+1)/2)-1;i++){
           y+=  W(i)*W(n-i);
        }
        return y;
    }


}
int main() {
   string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
         }
    }
     return 0;
}

# 0646, 2024-11-02 12:50:00, PPPP--P--- (50%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
    if(k == 0) return 1;
    if(k > n) return 0;
    return T(n, k-1) + T(n-1, k-1) + T(n - 1, k);
}
long long S(int n) { // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    int sum = 0;
    for(int k = 1; k < n-2 ;k++){
        sum += S(k) * S(n-k-1);
    }
    return 3*S(n-1) + sum;
}
long long W(int n) { // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(n == 2){
        int sum = 0;
        for(int i = 1; i < (n/2)-1; i++){
            sum += W(i) * W(n - i);
        }
        return ((W(n/2) * (W(n/2) + 1)) / 2) + sum;
    }
    int x = 0;
    for(int i = 1; i < ((n+1)/2) - 1; i++){
        x += W(i) * W(n-i);
    }
    return x;
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

Max Score = 40


# 0647, 2024-11-02 09:26:40, xxxPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0 && n>0 || k > 0 && n==0) return 1;
if(k>n) return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 && n >1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0648, 2024-11-02 09:27:42, xxxPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0 && n>0 /*|| k > 0 && n==0*/) return 1;
if(k>n) return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 ){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0649, 2024-11-02 09:29:18, xxxPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0 && n>0 /*|| k > 0 && n==0*/) return 1;
if(k>n) return 0;
return T(n,k-1) + T(n-1,k-1) + T(n-1,k);


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i < (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i < ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0650, 2024-11-02 09:35:42, xxxPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0 && n>0 || k > 0 && n==0) return 1;
if(k > n) return 0;

return T(n,k-1) + T(n-1,k-1) + T(n-1,k);


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0651, 2024-11-02 09:38:36, xxxPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0 && n>0 || k > 0 && n==0) return 1;
if(k > n) return 0;
if(k >1 && k <= n) {
   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    };


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0652, 2024-11-02 11:19:35, xxxPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0 && n>0 || k > 0 && n==0) return 1;
if(k > n) return 0;
if(k >1 && k <= n) {
   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
    };


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0653, 2024-11-02 11:19:57, xxxPPPP--x (40%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k==0 && n>0 || k > 0 && n==0) return 1;
if(k > n) return 0;

   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
  


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0654, 2024-11-02 11:36:35, Compilation error (0%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
long long f = 0;
if(k==0 && n >0|| n==0 && k > 0) return 1;

 if( k > 1 && n >= k){
   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);}

return 0;
}


}
long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0655, 2024-11-02 11:36:52, ---PPPP--- (40%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
long long f = 0;
if(k==0 && n >0|| n==0 && k > 0) return 1;

 if( k > 1 && n >= k){
   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);}

return 0;
}



long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0656, 2024-11-02 11:37:31, xxxPPPP--x (40%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
long long f = 0;
if(k==0 && n >0|| n==0 && k > 0) return 1;

 if( k > 1 && n >= k){
   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);}
}



long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0657, 2024-11-02 11:37:43, xxxPPPP--x (40%)

#include <iostream>
using namespace std;

long long T(int n, int k) { // Schroder Triangle
long long f = 0;
if(k==0 && n >0|| n==0 && k > 0) return 1;


   return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}



long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 !=0 &&  n!= 1){
 for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}
for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
 }
return (((W(n/2) )*(W(n/2) +1))/2) + evensum;

}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0658, 2024-11-02 11:49:22, xxxPPPP--x (40%)

#include <iostream>
using namespace std;


long long T(int n, int k) { // Schroder Triangle

if(k==0 && n >0|| n==0 && k > 0) return 1;
   if(n < k) return 0;
return  T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}



long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;
long long evensum =0;
if(n == 0 || n==1) return n;
if(n%2 ==0){
 for(int i =1; i <= ((n/2)-1); i++){

evensum+= W(i) * W(i-1);
}
return (((W(n/2))*(W(n/2) +1))/2) + evensum;
}


for(int i =1; i <= (((n+1)/2)-1); i++){

sumW += W(i) * W(i-1);
 }

return sumW;
}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}
# 0659, 2024-11-02 11:50:21, xxxPPPP--x (40%)

#include <iostream>
using namespace std;


long long T(int n, int k) { // Schroder Triangle

if(k==0 && n >0|| n==0 && k > 0) return 1;
   if(n < k) return 0;
return  T(n,k-1) + T(n-1,k-1) + T(n-1,k);

}



long long S(int n) { // Schroder Number
long long sum = 0;
if(n==0) return 1;
if(n==1) return 2;
for(int k = 1; k<= n-2; k++){
 sum += (S(k) *S(n-k-1));


}
return sum + (3*(S(n-1)));
}


long long W(int n) { // Wedderburn–Etherington Number
long long sumW = 0;

if(n == 0 || n==1) return n;
if(n%2 ==0){
 for(int i =1; i <= ((n/2)-1); i++){

sumW+= W(i) * W(i-1);
}
return (((W(n/2))*(W(n/2) +1))/2) + sumW;
}


for(int i =1; i <= (((n+1)/2)-1); i++){
sumW += W(i) * W(i-1);
 }
return sumW;
}


int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0660, 2024-11-02 12:05:05, P---PPP--- (40%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
if(k==0){
    return 1;
}
if(k>n){
    return 0;
}
if(k > 1 && n >= k){
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
return 0;
}
long long S(int n)
{ // Schroder Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 2;
}
if(n >= 2){
    int sum = 0;
    for(int i = 1; i <= n-2; i++){
        sum += (S(i) * S(n-i-1));
    }
    return sum + (3*S(n-1));
}
return 0;
}
long long W(int n)
{ // Wedderburn–Etherington Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 1;
}
if(n>=2){
    int sum = 0;
    if(n % 2 == 0){
        for(int i = 1; i <= n/2 - 1; i++){
            sum += (W(i) * W(n-i));
        }
    }
    return sum + ((W(n/2)) * (W(n/2) + 1))/2;
}
if(n>=3){
    int sum = 0;
    if(n % 2 == 1){
        for(int i = 1; i <= ((n+1)/2) - 1; i++){
            sum += (W(i) * W(n-i));
        }           
    }
    return sum;
}
return 0;
}
// loop
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0661, 2024-11-02 12:05:34, P---PPPxxx (40%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
if(k==0){
    return 1;
}
if(k>n){
    return 0;
}
if(k > 1 && n >= k){
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
return 0;
}
long long S(int n)
{ // Schroder Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 2;
}
if(n >= 2){
    int sum = 0;
    for(int i = 1; i <= n-2; i++){
        sum += (S(i) * S(n-i-1));
    }
    return sum + (3*S(n-1));
}
return 0;
}
long long W(int n)
{ // Wedderburn–Etherington Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 1;
}
if(n>=2){
    int sum = 0;
    if(n % 2 == 0){
        for(int i = 0; i < n/2 - 1; i++){
            sum += (W(i) * W(n-i));
        }
    }
    return sum + ((W(n/2)) * (W(n/2) + 1))/2;
}
if(n>=3){
    int sum = 0;
    if(n % 2 == 1){
        for(int i = 0; i < ((n+1)/2) - 1; i++){
            sum += (W(i) * W(n-i));
        }           
    }
    return sum;
}
return 0;
}
// loop
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0662, 2024-11-02 12:06:31, P-----Pxxx (20%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
if(k==0){
    return 1;
}
if(k>n){
    return 0;
}
if(k > 1 && n >= k){
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
return 0;
}
long long S(int n)
{ // Schroder Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 2;
}
if(n >= 2){
    int sum = 0;
    for(int i = 0; i < n-2; i++){
        sum += (S(i) * S(n-i-1));
    }
    return sum + (3*S(n-1));
}
return 0;
}
long long W(int n)
{ // Wedderburn–Etherington Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 1;
}
if(n>=2){
    int sum = 0;
    if(n % 2 == 0){
        for(int i = 0; i < n/2 - 1; i++){
            sum += (W(i) * W(n-i));
        }
    }
    return sum + ((W(n/2)) * (W(n/2) + 1))/2;
}
if(n>=3){
    int sum = 0;
    if(n % 2 == 1){
        for(int i = 0; i < ((n+1)/2) - 1; i++){
            sum += (W(i) * W(n-i));
        }           
    }
    return sum;
}
return 0;
}
// loop
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0663, 2024-11-02 12:06:47, P---PPPxxx (40%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
if(k==0){
    return 1;
}
if(k>n){
    return 0;
}
if(k > 1 && n >= k){
    return T(n,k-1) + T(n-1,k-1) + T(n-1,k);
}
return 0;
}
long long S(int n)
{ // Schroder Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 2;
}
if(n >= 2){
    int sum = 0;
    for(int i = 1; i <= n-2; i++){
        sum += (S(i) * S(n-i-1));
    }
    return sum + (3*S(n-1));
}
return 0;
}
long long W(int n)
{ // Wedderburn–Etherington Number
if(n == 0){
    return 0;
}
if(n == 1){
    return 1;
}
if(n>=2){
    int sum = 0;
    if(n % 2 == 0){
        for(int i = 0; i < n/2 - 1; i++){
            sum += (W(i) * W(n-i));
        }
    }
    return sum + ((W(n/2)) * (W(n/2) + 1))/2;
}
if(n>=3){
    int sum = 0;
    if(n % 2 == 1){
        for(int i = 0; i < ((n+1)/2) - 1; i++){
            sum += (W(i) * W(n-i));
        }           
    }
    return sum;
}
return 0;
}
// loop
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

Max Score = 30


# 0664, 2024-11-02 09:20:57, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(n == 0 || n == 0)

}
long long S(int n) {       // Schroder Number
if (n == 1 || n == 2)
return 1;

return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);



}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0665, 2024-11-02 09:48:56, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(n == 0 || k == 0)
return 1;

if (n == 1 || n == 2)
return 1;

return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);

}
long long S(int n) {       // Schroder Number
if (n == 1 || n == 2)
return 1;

return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);


}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 0)
return 1;
if(n % 2 == 0)
return 1;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0666, 2024-11-02 09:58:45, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(n == 0 || k == 0)
return 1;

if (n == 1 || n == 2)
return 1;
if (n == 1 || n == 1)
return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);

}
long long S(int n) {       // Schroder Number
if (n == 1 || n == 2)
return 1;

return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 0)
return 1;
if(n % 2 == 0)
return 1;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0667, 2024-11-02 10:05:14, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(n == 0 || k == 0)
return 1;

if (n == 1 || k == 2)
return 1;
if (n == 1 || k == 1)
return 0;
long long S(int n) {       // Schroder Number
if (n == 1 || n == 2)
return 1;

return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 0)
return 1;
if(n % 2 == 0)
return 1;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0668, 2024-11-02 10:05:50, P--x--P--- (20%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(n == 0 || k == 0)
return 1;

if (n == 1 || k == 2)
return 1;
if (n == 1 || k == 1)
return 0;
}
long long S(int n) {       // Schroder Number
if (n == 1 || n == 2)
return 1;

return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 0)
return 1;
if(n % 2 == 0)
return 1;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0669, 2024-11-02 11:16:01, ------P--- (10%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (k == 0)
return 1;
if (n <= k)
return k ;
}

long long S(int n) {   // Schroder Number
if (n == 1 || n == 2)
return 1;

if(n == 0)
return 1;
if(n == 1)
return 2;

if(n == 1 ||n == 2 )
return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 1)
return 1;

if(n % 2 == 0)
return 0;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0670, 2024-11-02 11:30:15, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if (n == 1 || n == 2)
return 1;

if(k == 0)
return 1;
if(k > n)
return 0;

if(n == 1 ||n == 2 )
return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long S(int n) {   // Schroder Number
if (n == 1 || n == 2)
return 1;

if(n == 0)
return 1;
if(n == 1)
return 2;

if(n == 1 ||n == 2 )
return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 1)
return 1;

if(n % 2 == 0)
return 0;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0671, 2024-11-02 11:59:22, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangl
if(k == 0)
return 1;
if(k > n)
return 0;

if(n == 1 ||n == 2 )
return ((6 * n - 9) * S(n - 1) - (n - 3) * S(n - 2) / n);
}

long long S(int n) {   // Schroder Number
if (n == 1 || n == 2)
return 1;


if(n == 0)
return 1;
if(n == 1)
return 2;

if(n == 1 ||n == 2 )
return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 1)
return 1;

if(n % 2 == 0)
return 0;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0672, 2024-11-02 12:03:22, P--P--P--- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
if(n == 0 || k == 0)
return 1;
if (n == 1 || k == 2)
return 1;
if (n == 1 || k == 1)
return 0;
if (k > n)
return 0;
}

long long S(int n) {       // Schroder Number
if (n == 0)
return 1;
if (n == 1)
return 2;

if (n>0)
return ((6 * n - 9) * S(n - 1) -
        (n - 3) * S(n - 2) / n);
}
long long W(int n) {         // Wedderburn–Etherington Number
if(n == 0)
return 0;
if(n == 0)
return 1;
if(n % 2 == 0)
return 1;
if (n % 2 != 0)
return 1;
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0673, 2024-11-02 11:51:19, PxxP--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}
int sum = 0 ;
long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        for(int k  ;k <= n-2 ; k++) sum += (S(k)+S(n-k-1)) ;
    return 3*S(n-1)+sum ;
        
    }
    
}
int sum2 = 0 ;
int sum3 = 0 ;
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        for (int i = 1; i <= (n/2)-1 ; i++) {
            sum2 += W(i)*W(n-i) ;
        }
        return (W(n/2)+W((n/2)+1))/2 + sum2 ;
    }
    if (n>0 &&n%2 != 0 ) {
        for (int i = 1; i <= ((n+1)/2)-1 ; i++) {
            sum3 += W(i)*W(n-i) ;
        }
        return sum3 ;
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0674, 2024-11-02 11:52:08, PxxP--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}
int sum = 0 ;
long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        for(int k  ;k <= n-2 ; k++) sum += (S(k)+S(n-k-1)) ;
    return 3*S(n-1)+sum ;
        
    }
    
}
int sum2 = 0 ;
int sum3 = 0 ;
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        for (int i = 1; i <= (n/2)-1 ; i++) {
            sum2 += W(i)*W(n-i) ;
        }
        return (W(n/2)+W((n/2)+1))/2 + sum2 ;
    }
    if (n>0 &&n%2 != 0 ) {
        for (int i = 1; i <= ((n+1)/2)-1 ; i++) {
            return W(i)*W(n-i) ;
        }
        
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0675, 2024-11-02 11:55:30, PxxP--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}
long long sum = 0 ;
long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        for(int k  ;k <= n-2 ; k++) sum += (S(k)+S(n-k-1)) ;
    return 3*S(n-1)+sum ;
        
    }
    
}
long long sum2 = 0 ;
long long sum3 = 0 ;
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        for (int i = 1; i <= (n/2)-1 ; i++) {
            sum2 += W(i)*W(n-i) ;
        }
        return (W(n/2)+W((n/2)+1))/2 + sum2 ;
    }
    if (n>0 &&n%2 != 0 ) {
        for (int i = 1; i <= ((n+1)/2)-1 ; i++) {
            sum3 += W(i)*W(n-i) ;
        }
        return sum3 ;
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0676, 2024-11-02 11:59:46, PxxP--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}
long long sum = 0 ;
long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        for(int k  ;k <= n-2 ; k++) sum += (S(k)+S(n-k-1)) ;
    return 3*S(n-1)+sum ;
        
    }
    
}
long long sum2 = 0 ;
long long sum3 = 0 ;
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        for (int i = 1; i <= (n/2)-1 ; i++) {
            sum2 += W(i)*W(n-i) ;
        }
        return (W(n/2)+W((n/2)+1))/2 + sum2 ;
    }
    if (n>0 &&n%2 != 0 && n!= 1 ) {
        for (int i = 1; i <= ((n+1)/2)-1 ; i++) {
            sum3 += W(i)*W(n-i) ;
        }
        return sum3 ;
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0677, 2024-11-02 12:03:23, PxxP--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}
long long sum = 0 ;
long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        for(long long k = 1 ;k <= n-2 ; k++) sum += (S(k)+S(n-k-1)) ;
    return 3*S(n-1)+sum ;
        
    }
    
}
long long sum2 = 0 ;
long long sum3 = 0 ;
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        for (long long i = 1; i <= (n/2)-1 ; i++) {
            sum2 += W(i)*W(n-i) ;
        }
        return (W(n/2)+W((n/2)+1))/2 + sum2 ;
    }
    if (n>0 &&n%2 != 0 && n!= 1 ) {
        for (long long i = 1; i <= ((n+1)/2)-1 ; i++) {
            sum3 += W(i)*W(n-i) ;
        }
        return sum3 ;
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0678, 2024-11-02 12:06:39, PxxPxxPxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}
long long sum = 0 ;
long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        long long k = 1 ;
        k++ ;
    return 3*S(n-1)+(S(k)+S(n-k-1)) ;
        
    }
    
}
long long sum2 = 0 ;
long long sum3 = 0 ;
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        long long i = 1; i++ ;
        return (W(n/2)+W((n/2)+1))/2 +  W(i)*W(n-i) ;
    }
    if (n>0 &&n%2 != 0 && n!= 1 ) {
        long long i = 1 ;
        i++ ;
        return W(i)*W(n-i) ;
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0679, 2024-11-02 12:08:06, PxxP--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}
long long sum = 0 ;
long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        for(long long k  ;k < n-2 ; k++) sum += (S(k)+S(n-k-1)) ;
    return 3*S(n-1)+sum ;
        
    }
    
}
long long sum2 = 0 ;
long long sum3 = 0 ;
long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        for (long long i = 1; i < (n/2)-1 ; i++) {
            sum2 += W(i)*W(n-i) ;
        }
        return (W(n/2)+W((n/2)+1))/2 + sum2 ;
    }
    if (n>0 &&n%2 != 0 && n!= 1 ) {
        for (long long i = 1; i < ((n+1)/2)-1 ; i++) {
            sum3 += W(i)*W(n-i) ;
        }
        return sum3 ;
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0680, 2024-11-02 12:09:58, PxxP--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k == 0)  {
        return 1 ;
    }
    if( k > 1 && k <= n) T(n,k-1) + T(n-1,k-1) + T(n-1,k) ;
    else if(k > n) return 0 ;
    
}

long long S(int n) {         // Schroder Number
    if (n == 0) return 1 ;
    if (n == 1 ) return 2 ;
    if (n >= 2) {
        long long sum = 0 ;
        for(long long k = 1 ;k < n-2 ; k++) sum += (S(k)+S(n-k-1)) ;
    return 3*S(n-1)+sum ;
        
    }
    
}

long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0 ;
    }
    if (n == 1) {
        return 1 ;
    }
    if (n>0 &&n%2 == 0 ) {
        long long sum2 = 0 ;
        for (long long i = 1; i < (n/2)-1 ; i++) {
            sum2 += W(i)*W(n-i) ;
        }
        return (W(n/2)+W((n/2)+1))/2 + sum2 ;
    }
    if (n>0 &&n%2 != 0 && n!= 1 ) {
        long long sum3 = 0 ;
        for (long long i = 1; i < ((n+1)/2)-1 ; i++) {
            sum3 += W(i)*W(n-i) ;
        }
        return sum3 ;
    }
    
    

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0681, 2024-11-02 13:53:54, P--xxxxxx- (10%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if (k==0) return 1;

    return T(n,k-1)+T(n-1,k-1)+T(n,k-1);

}
long long S(int n) {         // Schroder Number
    /*if(n==1)return 2;
    if(n==0)return 1;

    long long sum;
    for(long long k=1; k<n-2: k++){
        sum += S(k) * S(n-k-1);

    }

    return 3*S(n-1) + */

}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0682, 2024-11-02 13:54:34, P--P------ (20%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if (k==0) return 1;

    return T(n,k-1)+T(n-1,k-1)+T(n,k-1);

}
long long S(int n) {         // Schroder Number
    if(n==1)return 2;
    if(n==0)return 1;

}
long long W(int n) {         // Wedderburn–Etherington Number


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0683, 2024-11-02 13:55:09, P--P--P--- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>n) return 0;
    if (k==0) return 1;

    return T(n,k-1)+T(n-1,k-1)+T(n,k-1);

}
long long S(int n) {         // Schroder Number
    if(n==1)return 2;
    if(n==0)return 1;

}
long long W(int n) {         // Wedderburn–Etherington Number
   if(n==0)return 0;
  if(n==1)return 1;


}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0684, 2024-11-02 10:59:05, Compilation error (0%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > 1 && n >=k)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n,k-1);
    }
    else if( k > n)
    {
        return 0;
    }
    else return 1;

}
long long S(int n) {         // Schroder Number
    if(n >= 2)
    {
        int smxn=0;
        for(int i = 1 ; i <= n-2 ; i++)
        {
            smxn += S(i) * S(n-i-i);
        }
        return 3*S(n-1) + smxn;
    }
    else if (n == 0)
    {
        return 1;
    }
    else return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }
    else if (n == 1)
    {
        return 1;
    }
    else if (n % 2 == 0)
    {
        int smxn=0;
        for(int i = 1 ; i <= (n/2)-1)
        {
            smxn += W(i) * W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1)) / 2 ) + smxn;
    }
    else 
    {
        int smxn=0;
        for(int i = 1 ; i <= (n/2)-1)
        {
            smxn += W(i) * W(n-i);
        }
        return smxn;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0685, 2024-11-02 10:59:45, P--P--P--- (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > 1 && n >=k)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n,k-1);
    }
    else if( k > n)
    {
        return 0;
    }
    else return 1;

}
long long S(int n) {         // Schroder Number
    if(n >= 2)
    {
        int smxn=0;
        for(int i = 1 ; i <= n-2 ; i++)
        {
            smxn += S(i) * S(n-i-i);
        }
        return 3*S(n-1) + smxn;
    }
    else if (n == 0)
    {
        return 1;
    }
    else return 2;

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }
    else if (n == 1)
    {
        return 1;
    }
    else if (n % 2 == 0)
    {
        int smxn=0;
        for(int i = 1 ; i <= (n/2)-1;i++)
        {
            smxn += W(i) * W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1)) / 2 ) + smxn;
    }
    else 
    {
        int smxn=0;
        for(int i = 1 ; i <= (n/2)-1;i++)
        {
            smxn += W(i) * W(n-i);
        }
        return smxn;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0686, 2024-11-02 12:11:11, P--PxxP--x (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k > 1 && n >=k)
    {
        return T(n,k-1) + T(n-1,k-1) + T(n,k-1);
    }
    else if( k > n)
    {
        return 0;
    }
    else return 1;

}
long long S(int n) {         // Schroder Number
    if (n == 0)
    {
        return 1;
    }
    else if (n ==1)
    {
        return 2;
    }
    else if(n >= 2)
    {
        int smxn=0;
        for(int i = 1 ; i <= n-2 ; i++)
        {
            smxn += S(i) * S(n-i-i);
        }
        return 3*S(n-1) + smxn;
    }

}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0)
    {
        return 0;
    }
    else if (n == 1)
    {
        return 1;
    }
    else if (n % 2 == 0)
    {
        int smxn=0;
        for(int i = 1 ; i <= (n/2)-1;i++)
        {
            smxn += W(i) * W(n-i);
        }
        return ((W(n/2) * (W(n/2)+1)) / 2 ) + smxn;
    }
    else 
    {
        int smxn=0;
        for(int i = 1 ; i <= (n/2)-1;i++)
        {
            smxn += W(i) * W(n-i);
        }
        return smxn;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0687, 2024-11-02 11:02:46, P--P--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1 && k<= n){
       return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n) return 0;
    else if(k == 0) return 1;

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    else if(n == 1) return 2;
    else if(n >= 2){
        int a;
        for (int i = 1; i < n-2; i++)
        {
            a += S(i)*S(n-i-1);
        }
        return (3*S(n-1))+a;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    else if (n == 1) return 1;
    else if(n%2 == 0){
        int a;
        for (int i = 1; i < (n/2)-1; i++)
        {
            a += W(i)*W(n-i);
        }
        return ((W(n/2)*(W(n/2)+1))/2) + a;
    }
    else if (n%2 != 0){
        int a;
        for (int i = 0; i < ((n+1)/2)-1; i++)
        {
            a += W(i)*W(n-i);
        }

        return a;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0688, 2024-11-02 11:07:30, P--P--Pxxx (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(k>1 && k<= n){
       return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }
    else if(k>n) return 0;
    else if(k == 0) return 1;

}
long long S(int n) {         // Schroder Number
    if(n == 0) return 1;
    if(n == 1) return 2;
    if(n >= 2){
        long long a;
        for (int i = 1; i < n-2; i++)
        {
            a += S(i)*S(n-i-1);
        }
        long long p = (3*S(n-1))+a;
        return p;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n == 0) return 0;
    if (n == 1) return 1;
    else if(n%2 == 0){
        long long a;
        for (int i = 1; i < (n/2)-1; i++)
        {
            a += W(i)*W(n-i);
        }
        long long p = ((W(n/2)*(W(n/2)+1))/2) + a;
        return p;
    }
    else if (n%2 != 0){
        long long a;
        for (int i = 0; i < ((n+1)/2)-1; i++)
        {
            a += W(i)*W(n-i);
        }

        return a;
    }

}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0689, 2024-11-02 14:38:29, PPPxxxxxx- (30%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
if(k>n){
    return 0;
}
if(k==0){
    return 1;
}
    return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
long long S(int n) { // Schroder Number
}
long long W(int n) { // Wedderburn–Etherington Number
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0690, 2024-11-02 10:37:36, P--PxxP--x (30%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if (k > 1 && k <= n) {
        return T(n,k-1) + T(n-1,k-1) + (T(n-1,k));
    }
    else if (k > n) {
        return 0;
    }
    else {
        return 1;
    }
}

long long S(int n) {         // Schroder Number
    long long t = 0;
    if (n >= 2) {
        for (int i = 1; i < n-2; ++i) {
            t += S(i)*S(n-i-1);
        }
    t = 3*S(n-1);
    }
    else if (n == 0) {
        return 1;
    }
    else if (n == 1) {
        return 2;
    }
}

long long W(int n) {         // Wedderburn–Etherington Number
    if (n == 0) {
        return 0;
    }
    else if (n ==1) {
        return 1;
    }
    else if (n % 2 == 0) {
        long long t1 = W(n/2)*(W(n/2)+1)/2;
        long long t2 = 0;
        for (int i = 1; i < (n/2) - 1; ++i) {
            t2 += W(i)*W(n-i);
        }
        return t1 + t2;
    }
    else if (n % 2 != 0 && n > 1) {
        long long t = 0;
        for (int i = 1; i < ((n+1)/2)-1; ++i) {
            t += W(i)*W(n-i);
        }
        return t;
    }
}

int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

Max Score = 20


# 0691, 2024-11-02 12:08:06, P--P------ (20%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(n>=k && k>1){
        return T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }else if(k>n){
        return 0;
    }else if(k==0){
        return 1;
    }

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }else if(n>=2){
        int x = 0;
        for(int i = 1;i<n-2;i++){
            x+=S(i)*S(n-i-1);
        }
        return 3*S(n-1)+x;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n/2>=1){
        int x = 0;
        for(int i = 1; i<(n/2)-1;i++){
            x+=W(i)*W(n-i);
        }
        return (W(n/2)*W(n/2)+1)/2 + x;
    }
    else if(n%2>=1){
        int x = 0;
        for(int i = 1;i<(n+1)/2 - 1;i++){
            x+=W(i)*W(n-i);
        }
        return x;
    }else if(n==0){
        return 0;
    }else if(n==1){
        return 1;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0692, 2024-11-02 12:08:52, PxxPxx-xxx (20%)

#include <iostream>

using namespace std;

long long T(int n, int k) {  // Schroder Triangle
    if(n>=k && k>1){
        T(n,k-1)+T(n-1,k-1)+T(n-1,k);
    }else if(k>n){
        return 0;
    }else if(k==0){
        return 1;
    }

}
long long S(int n) {         // Schroder Number
    if(n==0){
        return 1;
    }else if(n==1){
        return 2;
    }else if(n>=2){
        int x = 0;
        for(int i = 1;i<n-2;i++){
            x+=S(i)*S(n-i-1);
        }
        3*S(n-1)+x;
    }
}
long long W(int n) {         // Wedderburn–Etherington Number
    if(n/2>=1){
        int x = 0;
        for(int i = 1; i<(n/2)-1;i++){
            x+=W(i)*W(n-i);
        }
        (W(n/2)*W(n/2)+1)/2 + x;
    }
    else if(n%2>=1){
        int x = 0;
        for(int i = 1;i<(n+1)/2 - 1;i++){
            x+=W(i)*W(n-i);
        }
        return x;
    }else if(n==0){
        return 0;
    }else if(n==1){
        return 1;
    }
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0693, 2024-11-02 13:38:11, xxxP--P--x (20%)

#include <iostream>
using namespace std;
long long T(int n, int k)
{ // Schroder Triangle
    if(n > 0 && k ==0){
        return 1;
    }
    if(k > n){
        return 0;
    }
    if(1 < k && k <= n){
        return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    }
}
long long S(int n)
{ // Schroder Number
    if(n == 0){
        return 1;
    }
    if(n == 1){
        return 2;
    }
    if(n >= 2){
        int sum = 0;
        for(int i = 1; i < n-2; i++){
            sum += S(i)*S(n-i-1);
        }
        return 3*S(n-1) + sum;
    }
}
long long W(int n)
{ // Wedderburn–Etherington Number
    if(n == 0){
        return 0;
    }
    if(n == 1){
        return 1;
    }
    if(n > 1){
        if(n%2 == 0){
            int res = 0;
            for(int i =1; i < (n/2) - 1; i++){
                res += W(i)*W(n-i);
            }
            return(W(n/2)*W(n/2) + 1)/2 + res;
        }
        else{
            int res = 0;
            for(int i = 1; i < (n+1)/2 - 1; i++){
                res += W(i)*W(n-i);
            }
            return res;
        }
    }
}
int main()
{
    string fn;
    int p1, p2;
    while (cin >> fn >> p1)
    {
        if (fn == "T")
        {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1, p2) << endl;
        }
        else if (fn == "S")
        {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        }
        else if (fn == "W")
        {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

Max Score = 10


# 0694, 2024-11-02 13:08:57, ---xxxTTTx (0%)

#include<iostream>
#include<cmath>
#include<vector>
#include<map>
#include<set>
#include<tuple>
#include<utility>
#include<algorithm>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
long long N[] = {n,k};

if(1<k<=n) {
  return  N[n,k-1] + N[n-1,k-1] + N[n-1,k];
}
if(k>n){
return    1;

}
return T(n,k);
    }


long long S(int n) {         // Schroder Number
long long M[] = {n};
if(n>=2){
(3*M[n-1]) + M[n -1 -1];
}
if(S(0)){
return 1;
}
if(S(1)){return 2;}
return S(n);
}

long long W(int n) {         // Wedderburn–Etherington Number
long long K[]={n};
while(n%100 == 0){
((K[n/2] * (K[n/2] +1))/2) + K[n-1];
}
while(n%100 != 0){
    K[n-1];
}
if(W(0)){
return 0;
}
if(W(1)){
return 1;
}
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0695, 2024-11-02 13:11:03, ---x--P--- (10%)

#include<iostream>
#include<cmath>
#include<vector>
#include<map>
#include<set>
#include<tuple>
#include<utility>
#include<algorithm>
using namespace std;

long long T(int n, int k) {  // Schroder Triangle
long long N[] = {n,k};

if(1<k<=n) {
  return  N[n,k-1] + N[n-1,k-1] + N[n-1,k];
}
if(k>n){
return    1;

}
return T(n,k);
    }


long long S(int n) {         // Schroder Number
long long M[] = {n};
if(n>=2){
return (3*M[n-1]) + M[n -1 -1];
}
if(S(0)){
return 1;
}
if(S(1)){return 2;}
return S(n);
}

long long W(int n) {         // Wedderburn–Etherington Number
long long K[]={n};
while(n%100 == 0){
return ((K[n/2] * (K[n/2] +1))/2) + K[n-1];
}
while(n%100 != 0){
   return K[n-1];
}
if(W(0)){
return 0;
}
if(W(1)){
return 1;
}
return W(1);
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

Max Score = 0


# 0696, 2024-11-02 10:01:57, TTTxxxxxxT (0%)

#include <iostream>

using namespace std;
long long T(int n, int k) {  // Schroder Triangle
if(1<k<=n){
(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
if(k>n){
 cout<<0<<endl;
}
if(n,k=0){
cout<<1<<endl;
}
}
long long S(int n) {    // Schroder Number
}
long long W(int n) {         // Wedderburn–Etherington Number
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0697, 2024-11-02 10:27:53, xxxxxxxxxx (0%)

#include <iostream>

using namespace std;
long long T(int n, int k) {  // Schroder Triangle
/*if(1<k<=n){
(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
if(k>n){
 cout<<0<<endl;
}
if(n,k=0){
cout<<1<<endl;
}*/
}
long long S(int n) {    // Schroder Number
}
long long W(int n) {         // Wedderburn–Etherington Number
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0698, 2024-11-02 10:38:48, Compilation error (0%)

#include <iostream>

using namespace std;
long long T(int n, int k) {  // Schroder Triangle
if(1<k<=n){
(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
if(k>n){
 cout<<0<<endl;
}
if(n,k=0){
cout<<1<<endl;
}
}
long long S(int n){  // Schroder Number
if(n>=2){        
3*S(n-1)+(S*k*S(n-k-1))
}
}
long long W(int n) {          // Wedderburn–Etherington Number
W*(n/2)*(W*(n/2)+1)/2 + (W(i)W(n-i));
}
int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0699, 2024-11-02 11:57:08, Compilation error (0%)

#include <iostream>

using namespace std;
long long T(int n, int k) {  // Schroder Triangle
if(1<k<=n){
(n,k-1)+T(n-1,k-1)+T(n-1,k);
}
if(k>n){
 cout<<0<<endl;
}
if(n,k=0){
cout<<1<<endl;
}
}
long long S(int n){   // Schroder Number
if(n>=2){        
3*S(n-1)+(S*k*S(n-k-1))
}
}
long long W(int n) {          // Wedderburn–Etherington Number
(n/2)*(W*(n/2)+1)/2 + (W(i)W(n-i)) for n = 2,4,6,8;
(W(i)W(n-i)) for n = 3,5,7,9;
W(0)=0,W(1)=1;
}


int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0700, 2024-11-02 13:33:01, Compilation error (0%)

#include <bits/stdc++.h>
using namespace std;
long long  sum1, sum2, sum3;
long long T(int n, int k) {  // Schroder Triangle

    if (k > n) cout << 0;
    if (k = 0) cout << 1;
    if (k > 1 && n>= k) return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    
}
long long S(long long n) {         // Schroder Number
    if(n = 0) return 0;
    if (n = 1) return 2;
    if (n >= 2) {
        for (int k = 1; k < n+1; k++) {
         sum1 = S(k) * S(n-k-1); 
         sum1 += sum1;       
    }
    return 3*S(n-1) + sum1;
    };
}
long long W(long long n) {         // Wedderburn–Etherington Number
    if (n = 0) return 0;
    if (n = 1) return 2;
    if (n%2 = 0) { for (int i = 1; i < (n / 2); i++) {
         sum2 = W(i) * W(n-1); 
         sum2 += sum2;       
    }
    return ((W(n/2) * ( W(n/2) + 1 )) / 2) + sum2 ;
    };
    if (n%2 = 1) { for (int i = 1; i < (n / 2); i++) {
         sum3 = W(i) * W(n-1); 
         sum3 += sum3;       
    } return sum3;   
    }
}


int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0701, 2024-11-02 15:09:30, xxx------x (0%)

#include <bits/stdc++.h>
using namespace std;
long long  sum1, sum2, sum3;
long long T(int n, int k) {  // Schroder Triangle

    if (k > n) cout << 0;
    if (k = 0) cout << 1;
    if (k > 1 && n>= k) return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    
}
long long S(long long n) {         // Schroder Number
    if(n = 0) return 0;
    if (n = 1) return 2;
    if (n >= 2) {
        for (int k = 1; k < n+1; k++) {
         sum1 = S(k) * S(n-k-1); 
         sum1 += sum1;       
    }
    return 3*S(n-1) + sum1;
    };
}
long long W(long long n) {         // Wedderburn–Etherington Number
    if (n = 0) return 0;
    if (n = 1) return 2;
    if (n % 2 == 0) { for (int i = 1; i < (n / 2); i++) {
         sum2 = W(i) * W(n-1); 
         sum2 += sum2;       
    }
    return ((W(n/2) * ( W(n/2) + 1 )) / 2) + sum2 ;
    };
    if (n %2  == 1) { for (int i = 1; i < (n / 2); i++) {
         sum3 = W(i) * W(n-1); 
         sum3 += sum3;       
    } return sum3;   
    }
}


int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}
# 0702, 2024-11-02 15:13:50, xxx------x (0%)

#include <bits/stdc++.h>
using namespace std;
long long  sum1, sum2, sum3;
long long T(int n, int k) {  // Schroder Triangle

    if (k > n) cout << 0;
    if (k = 0) cout << 1;
    if (k > 1 && n>= k) return T(n, k-1) + T(n-1, k-1) + T(n-1, k);
    
}
long long S(long long n) {         // Schroder Number
    if(n = 0) return 0;
    if (n = 1) return 2;
    if (n >= 2) {
        for (int k = 1; k < n+1; k++) {
         sum1 = S(k) * S(n-k-1); 
         sum1 += sum1;       
    }
    return 3*S(n-1) + sum1;
    };
}
long long W(long long n) {         // Wedderburn–Etherington Number
    if (n = 0) return 0;
    if (n = 1) return 1;
    if (n % 2 == 0) { for (int i = 1; i < (n / 2); i++) {
         sum2 = W(i) * W(n-1); 
         sum2 += sum2;       
    }
    return ((W(n/2) * ( W(n/2) + 1 )) / 2) + sum2 ;
    };
    if (n %2  == 1) { for (int i = 1; i < (n / 2); i++) {
         sum3 = W(i) * W(n-1); 
         sum3 += sum3;       
    } return sum3;   
    }
}


int main() {
    string fn;
    int p1, p2;
    while (cin >> fn >> p1) {
        if (fn == "T") {
            cin >> p2;
            cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
        } else if (fn == "S") {
            cout << fn << '(' << p1 << ") = " << S(p1) << endl;
        } else if (fn == "W") {
            cout << fn << '(' << p1 << ") = " << W(p1) << endl;
        }
    }
    return 0;
}

# 0703, 2024-11-02 12:39:43, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
}
long long S(int n) { // Schroder Number
}
long long W(int n) { // Wedderburn–Etherington Number
}

int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
# 0704, 2024-11-02 12:45:20, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
       
    else if (k,n) return 0;
    else if () 
}
long long S(int n) { // Schroder Number
   long long
   long long
}
long long W(int n) { // Wedderburn–Etherington Number
 long long sum = 0;
}
int main() {
     string fn;
     int p1, p2;
    while (cin >> fn >> p1) {
    if (fn == "T") {
    cin >> p2;
    cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
    cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
    cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;
# 0705, 2024-11-02 12:54:04, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k) { // Schroder Triangle
       if (k>n) return 0;
       if (k=n) return 1;
       if (k>1 && n>=k) return  T(n,k-1) + T(n-1,k-1) + T(n−1,k);
}
long long S(int n) { // Schroder Number
   long long
   long long temp = 0
}
long long W(int n) { // Wedderburn–Etherington Number
 long long sum = 0;
}
int main() {
     string fn;
     int p1, p2;
    while (cin >> fn >> p1) {
    if (fn == "T") {
    cin >> p2;
    cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
    } else if (fn == "S") {
    cout << fn << '(' << p1 << ") = " << S(p1) << endl;
    } else if (fn == "W") {
    cout << fn << '(' << p1 << ") = " << W(p1) << endl;
    }
}
return 0;

# 0706, 2024-11-02 14:23:26, ---------- (0%)

#include <iostream>
#include<cmath>

using namespace std;

int main(){
    int a;
    string stri;
    float m,b;
    cin >> a >> stri;

    double x,y;
    float sum1,sum2,sum3,sum4,sum5;

    while (cin >> x >> y)
    {
        float e = x*y;
        sum1 += e;
        sum2 += x;
        sum3 += y;
        float W = x*x;
        sum4 += W;
        float g = y*y;
        sum5 += g;
    }
    
    m= (a*sum1 - sum2*sum3)/(sum4-sum5);
    b= (sum3-sum2)/a;
    m = round(m * 1e3)/1e3;
    b = round(b * 1e3)/1e3;
    
    if (stri == "mb" )
    {
        cout << m << endl;
        cout << b << endl;
        }
    
    if (stri == "func" )
    {
        cout << "y = ";
        if (m==0)
        {cout << b << endl;}
        else if (m==1)
        {cout << "x" << endl;}
        else if (m==-1)
        {cout << "-x" << endl;}

        cout << m << "x";

        if (b!=0)
        {if (b<0)
        {cout << " " << "-" << " " << b <<endl;}
        else{cout << " " << "+" << " " << b <<endl;}
        }else{cout<<endl;}
        
        }
        return 0;
}
# 0707, 2024-11-02 14:33:53, ---------- (0%)

#include <iostream>
#include<cmath>

using namespace std;

int main(){
    int a;
    string stri;
    float m,b;
    cin >> a >> stri;

    //double x,y;
    double xa[a];
    double ya[a];
    float sum1,sum2,sum3,sum4,sum5;

    for (int i = 0; i < a; i++)
    {
        cin >> xa[i];
        cin >> ya[i];
    }

    /*while (cin >> x )
    {
        cin >> y;

        float e = x*y;
        sum1 += e;

        sum2 += x;

        sum3 += y;

        float W = x*x;
        sum4 += W;

        float g = y*y;
        sum5 += g;
    }*/
    
    
    for(int i=0; i <a ;i++)
    {
        float e = xa[i]*ya[i];
        sum1 += e;

        sum2 += xa[i];

        sum3 += ya[i];

        float W = xa[i]*xa[i];
        sum4 += W;

        float g = ya[i]*ya[i];
        sum5 += g;
    }
    
    m= (a*sum1 - sum2*sum3)/(a*sum4-sum5);
    b= (sum3-sum2)/a;

    m = round(m * 1e3)/1e3;
    b = round(b * 1e3)/1e3;
    
    if (stri == "mb" )
    {
        cout << m << endl;
        cout << b << endl;
        }
    
    if (stri == "func" )
    {
        cout << "y = ";
        if (m==0)
        {cout << b << endl;}
        else if (m==1)
        {cout << "x" << endl;}
        else if (m==-1)
        {cout << "-x" << endl;}

        cout << m << "x";

        if (b!=0)
        {if (b<0)
        {cout << " " << "-" << " " << b <<endl;}
        else{cout << " " << "+" << " " << b <<endl;}
        }else{cout<<endl;}
        
        }
        return 0;
}

# 0708, 2024-11-02 14:28:26, Compilation error (0%)

#include <iostream>
using namespace std;
long long T(int n, int k){
        if(k == 0) return 1;
        if(k > 0) return 0;
        if(k >= 1) T(n, k-1)+ T(n-1,k);
}
long long S(int n){
    if(n == 0) return 1;
    if(n == 1) return 2;
    int sum = 3*S(n-1);
    for(int s = 0;s <= n-2;s++){
        sum += (s(k)s*(n-k-1));
    }
    return sum;

}
long long W(int n){
    if(n == 0) return 0;
    if(n == 1) return 1;
    for (int n = 0; n < 0;n++){
        sum  += (w(i)w*(n-i));
    } 
}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}

# 0709, 2024-11-02 15:32:54, Compilation error (0%)

#include <iostream>
using namespace std;
int rett=0;
long long T(int n, int k) { // Schroder Triangle

if (k>n&&k!=0){return ret;}
else if (k==0){
    rett=1;
    return rett;}
else {
rett =T(n,k - 1) + T(n - 1, k - 1) + T(n - 1, k);
return rett;
}
return 0;
}
int ret=0,sum=0;
long long S(int n) { // Schroder Number

if(n==0){
    ret=2;
    return ret;
}
else if(n==1){
    ret=1;
    return ret;
}
else{ ret=3*S(n-1);
for(int i=0;i<n-2;i++){
    sum+=S(i)*S(n-i-1);
}
ret+=sum;
return ret;
}
return 0;
}
int retw=0,sumw=0;
long long W(int n) { // Wedderburn–Etherington Number
if(n%2==0){
    retw=W(n/1)*(W(n/2)+1)/2;
    for(int i=0;i<n/2-1;i++){
        sumw+=W(i)*W(n-1);
    }
    retw+=sumw;
    return ret;
}
if(n%2==1){
    for(int i=0;i<(n+1)/2-1;i++){
        sumw+=W(i)*W(n-1);
    }
    retw=sum;
    return ret;
}
if(n==0){return retw;}
if(n==0){retw =1;
return ret;}




}
int main() {
string fn;
int p1, p2;
while (cin >> fn >> p1) {
if (fn == "T") {
cin >> p2;
cout << fn << '(' << p1 << ',' << p2 << ") = " << T(p1,p2) << endl;
} else if (fn == "S") {
cout << fn << '(' << p1 << ") = " << S(p1) << endl;
} else if (fn == "W") {
cout << fn << '(' << p1 << ") = " << W(p1) << endl;
}
}
return 0;
}