#include #include #include using namespace std; int main(){ int G, C, P; cin >> G >> C >> P; string S; cin >> S; vector>> dp(G + 1, vector>(C + 1, vector(P + 1, 0))); for (int i = 0; i <= G; i++){ for (int j = 0; j <= C; j++){ for (int k = 0; k <= P; k++){ if (!(i == G && j == C && k == P)){ if (S[i + j + k] == 'G'){ if (i < G){ dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k] + 1); } if (j < C){ dp[i][j + 1][k] = max(dp[i ][j + 1][k], dp[i][j][k]); } if (k < P){ dp[i][j][k + 1] = max(dp[i][j][k + 1], dp[i][j][k] + 3); } } if (S[i + j + k] == 'C'){ if (i < G){ dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k] + 3); } if (j < C){ dp[i][j + 1][k] = max(dp[i][j + 1][k], dp[i][j][k] + 1); } if (k < P){ dp[i][j][k + 1] = max(dp[i][j][k + 1], dp[i][j][k]); } } if (S[i + j + k] == 'P'){ if (i < G){ dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k]); } if (j < C){ dp[i][j + 1][k] = max(dp[i][j + 1][k], dp[i][j][k] + 3); } if (k < P){ dp[i][j][k + 1] = max(dp[i][j][k + 1], dp[i][j][k] + 1); } } } } } } cout << dp[G][C][P] << endl; }