#include <stdio.h>
#define JAVA_LENGTH 52
#define C_LENGTH 49
char* quote = "\"";
char* string = "%s";
char* quotedString = "  \"%s\"";

char* javaProgram[] = {
  "public class Quine {",
  "  static String quote = ",
  "  static String slash = ",
  "  static String semi = ",
  "  static String s = ",
  "  static String percent = ",
  "  static String space = ",
  "  static String comma = ",
  "  static String[] javaProgram = {",
  "  };",
  "  static String[] cProgram = {",
  "  };",
  "  public static final void main(String[] args) {",
  "    System.out.println(cProgram[0]);",
  "    System.out.println(cProgram[1]);",
  "    System.out.println(cProgram[2]);",
  "    System.out.print(cProgram[3]);",
  "    System.out.println(quote + slash + quote + quote + semi);",
  "    System.out.print(cProgram[4]);",
  "    System.out.println(quote + percent + s + quote + semi);",
  "    System.out.print(cProgram[5]);",
  "    System.out.println(quote + space + space + slash + quote + percent + s + slash + quote + quote + semi);",
  "    System.out.println();",
  "    System.out.println(cProgram[6]);",
  "    for (int i = 0; i < javaProgram.length; i++) {",
  "      System.out.print(space);",
  "      System.out.print(space);",
  "      System.out.print(quote + javaProgram[i] + quote);",
  "      if (i < javaProgram.length - 1)",
  "        System.out.println(comma);",
  "      else",
  "        System.out.println();",
  "    }",
  "    System.out.println(cProgram[7]);",
  "    System.out.println();",
  "    System.out.println(cProgram[8]);",
  "    for (int i = 0; i < cProgram.length; i++) {",
  "      System.out.print(space);",
  "      System.out.print(space);",
  "      System.out.print(quote + cProgram[i] + quote);",
  "      if (i < cProgram.length - 1)",
  "        System.out.println(comma);",
  "      else",
  "        System.out.println();",
  "    }",
  "    System.out.println(cProgram[9]);",
  "    System.out.println();",
  "    for (int i = 10; i < cProgram.length; i++) {",
  "      System.out.println(cProgram[i]);",
  "    }",
  "  }",
  "}"
};

char* cProgram[] = {
  "#include <stdio.h>",
  "#define JAVA_LENGTH 52",
  "#define C_LENGTH 49",
  "char* quote = ",
  "char* string = ",
  "char* quotedString = ",
  "char* javaProgram[] = {",
  "};",
  "char* cProgram[] = {",
  "};",
  "int main() {",
  "  int i;",
  "  printf(string, javaProgram[0]);putchar(10);",
  "  putchar(10);",
  "  printf(string, javaProgram[1]);putchar(34);putchar(92);putchar(34);putchar(34);putchar(59);putchar(10);",
  "  printf(string, javaProgram[2]);putchar(34);putchar(92);putchar(92);putchar(34);putchar(59);putchar(10);",
  "  printf(string, javaProgram[3]);putchar(34);putchar(59);putchar(34);putchar(59);putchar(10);",
  "  printf(string, javaProgram[4]);putchar(34);putchar(115);putchar(34);putchar(59);putchar(10);",
  "  printf(string, javaProgram[5]);putchar(34);putchar(37);putchar(34);putchar(59);putchar(10);",
  "  printf(string, javaProgram[6]);putchar(34);putchar(32);putchar(34);putchar(59);putchar(10);",
  "  printf(string, javaProgram[7]);putchar(34);putchar(44);putchar(34);putchar(59);putchar(10);",
  "  putchar(10);",
  "  printf(string, javaProgram[8]);putchar(10);",
  "  for (i = 0; i < JAVA_LENGTH; i++) {",
  "    putchar(32);",
  "    putchar(32);",
  "    printf(quotedString, javaProgram[i]);",
  "    if (i < JAVA_LENGTH -1 )",
  "      putchar(44);",
  "    putchar(10);",
  "  }",
  "  printf(string, javaProgram[9]);putchar(10);",
  "  putchar(10);",
  "  printf(string, javaProgram[10]);putchar(10);",
  "  for (i = 0; i < C_LENGTH; i++) {",
  "    putchar(32);",
  "    putchar(32);",
  "    printf(quotedString, cProgram[i]);",
  "    if (i < C_LENGTH -1 )",
  "      putchar(44);",
  "    putchar(10);",
  "  }",
  "  printf(string, javaProgram[11]);putchar(10);",
  "  putchar(10);",
  "  for (i = 12; i < JAVA_LENGTH; i++) {",
  "    printf(string, javaProgram[i]);putchar(10);",
  "  }",
  "  return 0;",
  "}"
};

int main() {
  int i;
  printf(string, javaProgram[0]);putchar(10);
  putchar(10);
  printf(string, javaProgram[1]);putchar(34);putchar(92);putchar(34);putchar(34);putchar(59);putchar(10);
  printf(string, javaProgram[2]);putchar(34);putchar(92);putchar(92);putchar(34);putchar(59);putchar(10);
  printf(string, javaProgram[3]);putchar(34);putchar(59);putchar(34);putchar(59);putchar(10);
  printf(string, javaProgram[4]);putchar(34);putchar(115);putchar(34);putchar(59);putchar(10);
  printf(string, javaProgram[5]);putchar(34);putchar(37);putchar(34);putchar(59);putchar(10);
  printf(string, javaProgram[6]);putchar(34);putchar(32);putchar(34);putchar(59);putchar(10);
  printf(string, javaProgram[7]);putchar(34);putchar(44);putchar(34);putchar(59);putchar(10);
  putchar(10);
  printf(string, javaProgram[8]);putchar(10);
  for (i = 0; i < JAVA_LENGTH; i++) {
    putchar(32);
    putchar(32);
    printf(quotedString, javaProgram[i]);
    if (i < JAVA_LENGTH -1 )
      putchar(44);
    putchar(10);
  }
  printf(string, javaProgram[9]);putchar(10);
  putchar(10);
  printf(string, javaProgram[10]);putchar(10);
  for (i = 0; i < C_LENGTH; i++) {
    putchar(32);
    putchar(32);
    printf(quotedString, cProgram[i]);
    if (i < C_LENGTH -1 )
      putchar(44);
    putchar(10);
  }
  printf(string, javaProgram[11]);putchar(10);
  putchar(10);
  for (i = 12; i < JAVA_LENGTH; i++) {
    printf(string, javaProgram[i]);putchar(10);
  }
  return 0;
}
