#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20000;
int f[MAXN + 10], pre[MAXN + 10];
int f2[2][MAXN + 10], pre2[2][MAXN + 10];
int x[MAXN + 10], y[MAXN + 10], n, m, p;
int F(int a, int b) { return (x[a] + y[b]) % p; }
void fun(int x1, int y1, int x2, int y2) {
  if (x2 - x1 >= 2) {
    int mid = (x1 + x2) >> 1;
    for (int i = y1; i <= y2; i++) f[i] = pre[i] = 0;
    for (int i = x1; i <= x2; i++) {
      for (int j = y1; j <= y2; j++) {
        if (j == y1 || f[j - 1] < f[j]) {
          f[j] = f[j] + F(i, j);
          if (i == mid) pre[j] = j;
        } else {
          f[j] = f[j - 1] + F(i, j);
          if (i == mid)
            pre[j] = j - 1;
          else if (i > mid)
            pre[j] = pre[j - 1];
        }
      }
    }
    if (x1 == 1 && y1 == 1 && x2 == n && y2 == m) printf("%d\n", f[y2]);
    int midY = pre[y2];
    fun(x1, y1, mid, midY);
    fun(mid, midY, x2, y2);
  } else {
    for (int i = x1; i <= x2; i++)
      for (int j = y1; j <= y2; j++) {
        if (i == x1 && j == y1)
          f2[i - x1][j] = F(i, j);
        else if (i == x1) {
          f2[i - x1][j] = f2[i - x1][j - 1] + F(i, j);
          pre2[i - x1][j] = j - 1;
        } else if (j == y1) {
          f2[i - x1][j] = f2[i - x1 - 1][j] + F(i, j);
          pre2[i - x1][j] = j;
        } else {
          if (f2[i - x1 - 1][j] > f2[i - x1][j - 1]) {
            f2[i - x1][j] = f2[i - x1 - 1][j] + F(i, j);
            pre2[i - x1][j] = j;
          } else {
            f2[i - x1][j] = f2[i - x1][j - 1] + F(i, j);
            pre2[i - x1][j] = j - 1;
          }
        }
      }
    if (x1 == 1 && y1 == 1 && x2 == n && y2 == m)
      printf("%d\n", f2[x2 - x1][y2]);
    int ptrX = x2, ptrY = y2;
    string tmp;
    while (ptrX != x1 || ptrY != y1) {
      if (pre2[ptrX - x1][ptrY] == ptrY - 1) {
        tmp.push_back('S');
        ptrY--;
      } else {
        tmp.push_back('C');
        ptrX--;
      }
    }
    reverse(tmp.begin(), tmp.end());
    printf("%s", tmp.c_str());
  }
}
int main() {
  scanf("%d%d%d", &n, &m, &p);
  for (int i = 1; i <= n; i++) scanf("%d", &x[i]);
  for (int i = 1; i <= m; i++) scanf("%d", &y[i]);
  fun(1, 1, n, m);
  return 0;
}
