#include <bits/stdc++.h>
using namespace std;
int n, m, mod, tot;
int a[20010], b[20010], c[40010];
long long f1[2][20010], f2[2][20010];
void work(int x1, int y1, int x2, int y2, long long s) {
  int i, j, j1, mid;
  long long t1;
  if (y1 == y2) {
    for (i = tot + 1; i <= tot + x2 - x1; i++) c[i] = 1;
    tot += x2 - x1;
    return;
  } else if (x1 == x2) {
    for (i = tot + 1; i <= tot + y2 - y1; i++) c[i] = 2;
    tot += y2 - y1;
    return;
  }
  for (i = x1 - 1; i <= x2 + 1; i++) {
    f1[0][i] = 0;
    f1[1][i] = 0;
    f2[0][i] = 0;
    f2[1][i] = 0;
  }
  mid = (y1 + y2) / 2;
  for (j = y1; j <= mid; j++) {
    j1 = j & 1;
    for (i = x1; i <= x2; i++)
      f1[j1][i] = max(f1[j1 ^ 1][i], f1[j1][i - 1]) + (b[j] + a[i]) % mod;
  }
  for (j = y2; j >= mid + 1; j--) {
    j1 = j & 1;
    for (i = x2; i >= x1; i--)
      f2[j1][i] = max(f2[j1 ^ 1][i], f2[j1][i + 1]) + (b[j] + a[i]) % mod;
  }
  if (s == -1) {
    for (i = x1; i <= x2; i++)
      s = max(s, f1[mid & 1][i] + f2[(mid & 1) ^ 1][i]);
    printf("%I64d\n", s);
  }
  for (i = x1; i <= x2; i++)
    if (f1[mid & 1][i] + f2[(mid & 1) ^ 1][i] == s) {
      t1 = f2[(mid & 1) ^ 1][i];
      work(x1, y1, i, mid, f1[mid & 1][i]);
      tot++;
      c[tot] = 2;
      work(i, mid + 1, x2, y2, t1);
      return;
    }
}
int main() {
  int i, j, j1;
  long long s = 0;
  scanf("%d%d%d", &n, &m, &mod);
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (i = 1; i <= m; i++) scanf("%d", &b[i]);
  if (n != 1 && m != 1)
    work(1, 1, n, m, -1);
  else {
    s = 0;
    for (i = 1; i <= n; i++)
      for (j = 1; j <= m; j++) s += (a[i] + b[j]) % mod;
    printf("%I64d\n", s);
    work(1, 1, n, m, -1);
  }
  for (i = 1; i <= tot; i++)
    if (c[i] == 1)
      printf("C");
    else
      printf("S");
  printf("\n");
  return 0;
}
