using System;
namespace A
{
class Program
{
static string[] ins = { "", "*", "**", "***" };
static int indMax = ins.Length;
static string myString = "mama";
static int[] indx = new int[myString.Length - 1];
static bool incc(int y, int carry)
{
if ((y == indx.Length)) {
Console.WriteLine(myString[myString.Length - 1]);
return (carry != 1); }
int carry1 = Math.DivRem(indx[y] + carry, indMax, out indx[y]);
Console.Write("{0}{1}", myString[y], ins[indx[y]]);
return incc(y + 1, carry1);
}
static void Main(string[] args)
{
while (incc(0, 1));
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIEEKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyBzdHJpbmdbXSBpbnMgPSB7ICIiLCAiKiIsICIqKiIsICIqKioiIH07CiAgICAgICAgc3RhdGljIGludCBpbmRNYXggPSBpbnMuTGVuZ3RoOwogICAgICAgIHN0YXRpYyBzdHJpbmcgbXlTdHJpbmcgPSAibWFtYSI7CiAgICAgICAgc3RhdGljIGludFtdIGluZHggPSBuZXcgaW50W215U3RyaW5nLkxlbmd0aCAtIDFdOwoKICAgICAgICBzdGF0aWMgYm9vbCBpbmNjKGludCB5LCBpbnQgY2FycnkpCiAgICAgICAgewogICAgICAgICAgICBpZiAoKHkgPT0gaW5keC5MZW5ndGgpKSB7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShteVN0cmluZ1tteVN0cmluZy5MZW5ndGggLSAxXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gKGNhcnJ5ICE9IDEpOyB9CiAgICAgICAgICAgIGludCBjYXJyeTEgPSBNYXRoLkRpdlJlbShpbmR4W3ldICsgY2FycnksIGluZE1heCwgb3V0IGluZHhbeV0pOwogICAgICAgICAgICBDb25zb2xlLldyaXRlKCJ7MH17MX0iLCBteVN0cmluZ1t5XSwgaW5zW2luZHhbeV1dKTsKICAgICAgICAgICAgcmV0dXJuIGluY2MoeSArIDEsIGNhcnJ5MSk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICB3aGlsZSAoaW5jYygwLCAxKSk7CiAgICAgICAgfQoKICAgIH0KfQo=