#include <bits/stdc++.h>
using namespace std;
const long long M = 51123987;
long long C[151][151];
int dp[2][3][51][51][51] = {};
int main() {
  int n;
  string s;
  cin >> n >> s;
  auto cur = dp[0];
  auto nex = dp[1];
  int u = (n - 1) / 3 + 1;
  int t[3] = {};
  for (int i = 0; i < n; i++) {
    memset(nex, 0, sizeof(dp) / 2);
    t[s[i] - 'a']++;
    for (int j = 0; j < 3; j++) {
      bool col = s[i] - 'a' == j;
      int c[3];
      for (c[0] = 0; c[0] <= t[0] && c[0] <= u; c[0]++) {
        for (c[1] = 0; c[1] <= t[1] && c[1] <= u; c[1]++) {
          for (c[2] = 0; c[2] <= t[2] && c[2] <= u; c[2]++) {
            long long v = 0;
            if (col) {
              if (c[j]) {
                if (c[0] + c[1] + c[2] == 1) {
                  v = 1;
                }
                int p[3] = {c[0], c[1], c[2]};
                p[j]--;
                for (int k = 1; k <= 2; k++) {
                  v += cur[(j + k) % 3][p[0]][p[1]][p[2]];
                  v %= M;
                }
              }
            } else {
              v = cur[j][c[0]][c[1]][c[2]];
            }
            nex[j][c[0]][c[1]][c[2]] = v;
          }
        }
      }
    }
    swap(nex, cur);
  }
  for (int i = 0; i <= u; i++) {
    C[i][0] = 1;
    for (int j = 1; j <= i; j++) {
      C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
      C[i][j] %= M;
    }
  }
  long long ret = 0;
  for (int i = max(0, u - 1); i <= u; i++) {
    for (int j = max(0, u - 1); j <= u; j++) {
      for (int k = max(0, u - 1); k <= u; k++) {
        if (i + j + k != n) continue;
        for (int p = min(i, 1); p <= i; p++) {
          for (int q = min(j, 1); q <= j; q++) {
            for (int r = min(k, 1); r <= k; r++) {
              long long s = 0;
              for (int v = 0; v < 3; v++) {
                s += cur[v][p][q][r];
                s %= M;
              }
              if (i != p) {
                s *= C[i - 1][p - 1];
                s %= M;
              }
              if (j != q) {
                s *= C[j - 1][q - 1];
                s %= M;
              }
              if (k != r) {
                s *= C[k - 1][r - 1];
                s %= M;
              }
              ret += s;
              ret %= M;
            }
          }
        }
      }
    }
  }
  cout << ret << endl;
  return 0;
}
