// Autor: Roland Kammerer
// MatNr: 0125555
// BspNr: 1130
// Beschreibung: Geldberechnung

//reformated with idea (www.intellij.com) by heder

import eprog.EprogException;
import eprog.EprogIO;

public class money1 extends EprogIO

{
  public static void main(String[] args) throws EprogException
  {

// variablendeklaration
    int rest = 0,grbetrag = 0,ausgabezahl = 0,laenge = 0,i;
    long rest1 = 0;
    String eingabe = "",zsyst = "",ausgabe = "",reststr = "";
    char zeichen;
    boolean kill = true;

// einlesen der eingabe
    eingabe = readWord();

// fehlerabfragen
    if ((eingabe.endsWith("A")))
    {
      kill = false;
      zsyst = "A";
    }

    if ((eingabe.endsWith("B")))
    {
      kill = false;
      zsyst = "B";
    }

// überprüfung und extrahieren der integerzahl
    laenge = eingabe.length();
    loop:
    for (i = 0; i < laenge - 1; i++)
    {
      zeichen = eingabe.charAt(i);
      if (Character.isDigit(zeichen))
      {
        reststr += zeichen;
      }
      else
      {
        kill = true;
        break loop;
      }
    }

// umwandlung des reststings in eine int zahl
    if (reststr == "") // nötig um bei 0..9 gefolgt von 'A' oder 'B', um keinen parseInt-fehler auszulösen
    {
      kill = true;
    }
    else
    {
      rest1 = Long.parseLong(reststr);
      if (rest1 <= 2147483647) (rest = Integer.parseInt(reststr));
    }

    if ((rest > 10000000) || (rest == 0)) (kill = true); // wertebereich der int-varialblen (laut spec), negative zahlen fallen so und so weg, da ihr 'char' kein digit ist (siehe oben); WICHTIG: falls die rest1 nicht in rest passt, dann kommt es auch zu keinem fehler, da rest mit 0 initialisiert wurde, und so sich kill=true ergibt.

//SCHEIN-BERECHNUNG SYSTEM A
    if (rest >= 5) ausgabe = "S";
    while ((rest >= 5) && (zsyst == "A"))
    {
      if (rest >= 500) (grbetrag = 500);
      if ((rest >= 200 && rest < 500)) (grbetrag = 200);
      if ((rest >= 100 && rest < 200)) (grbetrag = 100);
      if ((rest >= 50 && rest < 100)) (grbetrag = 50);
      if ((rest >= 20 && rest < 50)) (grbetrag = 20);
      if ((rest >= 10 && rest < 20)) (grbetrag = 10);
      if ((rest >= 5 && rest < 10)) (grbetrag = 5);

      ausgabezahl = rest / grbetrag;
      ausgabe += " " + grbetrag + " " + ausgabezahl;
      rest -= (grbetrag * ausgabezahl);
    }

//MUENZ-BERECHNUNG SYSTEM A

    if ((zsyst == "A") && (rest != 0))
    {
      if ((rest < 5) && (ausgabe != ""))
        (ausgabe += " M");
      else
        ausgabe = "M";
    }

    while ((rest < 5) && (rest != 0) && (zsyst == "A"))
    {
      if ((rest <= 4) && (rest >= 2)) (grbetrag = 2);
      if (rest == 1) (grbetrag = 1);

      ausgabezahl = rest / grbetrag;
      ausgabe += " " + grbetrag + " " + ausgabezahl;
      rest -= (grbetrag * ausgabezahl);
    }

//////////////////////////////////////////////////////////////

//SCHEIN-BERECHNUNG SYSTEM B

    if (rest >= 5) ausgabe = "S";

    while ((rest >= 5) && (zsyst == "B"))
    {
      if (rest >= 400) (grbetrag = 400);
      if ((rest >= 100 && rest < 400)) (grbetrag = 100);
      if ((rest >= 50 && rest < 100)) (grbetrag = 50);
      if ((rest >= 20 && rest < 50)) (grbetrag = 20);
      if ((rest >= 5 && rest < 20)) (grbetrag = 5);

      ausgabezahl = rest / grbetrag;
      ausgabe += " " + grbetrag + " " + ausgabezahl;
      rest -= (grbetrag * ausgabezahl);
    }

//MUENZ-BERECHNUNG SYSTEM B
    if ((zsyst == "B") && (rest != 0))
    {
      if ((rest < 5) && (ausgabe != ""))
        (ausgabe += " M");
      else
        ausgabe = "M";
    }

    while ((rest < 5) && (rest != 0) && (zsyst == "B"))
    {
      if ((rest <= 4) && (rest >= 2)) (grbetrag = 2);
      if (rest == 1) (grbetrag = 1);

      ausgabezahl = rest / grbetrag;
      ausgabe += " " + grbetrag + " " + ausgabezahl;
      rest -= (grbetrag * ausgabezahl);
    }

    if (!kill)
      println(ausgabe);
    else
      println("FALSCHE EINGABE");

  }
}