#include <bits/stdc++.h>
using namespace std;
int a[20005], b[20005], n, m, p;
int dp1[3][20005], dp2[3][20005];
inline int f(int first, int second) { return (a[first] + b[second]) % p; }
inline void get_ans(int x1, int y1, int x2, int y2) {
  if (x1 == x2 && y1 == y2) return;
  if (x1 == x2 && y1 + 1 == y2) {
    cout << 'S';
    return;
  }
  if (x1 + 1 == x2 && y1 == y2) {
    cout << 'C';
    return;
  }
  int mid = (x1 + y1 + x2 + y2) / 2;
  dp1[0][x2] = f(n - x2, m - y2);
  int first = 0;
  for (int i = x2 + y2; i > mid; i--) {
    for (int j = max(x1, i - y2); j <= min(x2, i - y1); j++) {
      int z = i - j;
      if (j != x1)
        dp1[first ^ 1][j - 1] =
            max(dp1[first ^ 1][j - 1], dp1[first][j] + f(n - j + 1, m - z));
      if (z != y1)
        dp1[first ^ 1][j] =
            max(dp1[first ^ 1][j], dp1[first][j] + f(n - j, m - z + 1));
      dp1[first][j] = 0;
    }
    first ^= 1;
  }
  int second = 0;
  for (int i = x1 + y1; i < mid; i++) {
    for (int j = max(x1, i - y2); j <= min(x2, i - y1); j++) {
      int z = i - j;
      if (j != x2)
        dp2[second ^ 1][j + 1] =
            max(dp2[second ^ 1][j + 1], dp2[second][j] + f(n - j, m - z));
      if (z != y2)
        dp2[second ^ 1][j] =
            max(dp2[second ^ 1][j], dp2[second][j] + f(n - j, m - z));
      dp2[second][j] = 0;
    }
    second ^= 1;
  }
  int posx = -1, tek = -1;
  for (int i = max(x1, mid - y2); i <= min(x2, mid - y1); i++) {
    if (tek < dp1[first][i] + dp2[second][i])
      posx = i, tek = dp1[first][i] + dp2[second][i];
    dp1[first][i] = 0, dp2[second][i] = 0;
  }
  if (x1 == 1 && y1 == 1 && x2 == n && y2 == m) cout << tek << '\n';
  get_ans(posx, mid - posx, x2, y2);
  get_ans(x1, y1, posx, mid - posx);
  return;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m >> p;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < m; i++) cin >> b[i];
  if (n == 1 && m == 1) cout << f(0, 0), exit(0);
  if (n == 1 && m == 2) cout << f(0, 0) + f(0, 1) << "\nS\n", exit(0);
  if (n == 2 && m == 1) cout << f(0, 0) + f(1, 0) << "\nC\n", exit(0);
  get_ans(1, 1, n, m);
  return 0;
}
