using System;
using System.Linq;
using System.Text;

internal class Program
{
    private static void Main(string[] args)
    {
        //prasa lai lietotājs ievada teikumu
        Console.Write("Ievadi teikumu: ");
        string input = Console.ReadLine() ?? ""; // ?? "" nodrošina ka input nav null

        //izvada ievadito teikumu bet teikums ir apgriests
        Console.WriteLine("Samainīti vārdi: " + reverseWords(input));

        //izvada ievadīto teikumu bet butri ir aptriesti cita secībā
        Console.WriteLine("Samainīti burti vārdos: " + ReverseLettersInWords(input));

        //veic funkciju kas pakāpeniski atklāj teikumu no centra
        revealfromcenter(input);

        //veic funkciju kas pakāpeniski izdzēš teikumu no centra
        erasefromcenter(input);

        //veic funkciju kas pakāpeniski izvada teikuma beigu daļas
        showdromendascending(input);

        //apgriež teikuma vārdus
        string reverseWords(string text)
        {
            //sadala teikumu vārdos lietojot atstarpes
            var words = text.Split(' ');
            //apgriež vārdu secību
            Array.Reverse(words);
            //apgrieztos vārdus saliek atpakaļ vienā teikumā
            return string.Join(" ", words).Trim(); //trim noņem liekās atstarpes
        }

        //apgriež katra vārda burtus
        string ReverseLettersInWords(string text)
        {
            //apgriež katra vārda burtus un savieno atpakaļ kopā
            var words = text.Split(' ').Select(word => new string(word.Reverse().ToArray()));
            return string.Join(" ", words);
        }

        //pakāpeniski atklāj teikumu no centra
        void revealfromcenter(string text)
        {
            //aprēķina teikuma vidējo punktu
            int mid = text.Length / 2;
            //izveido StringBuilder kas sākotnēji ir piepildīts ar atstarpēm
            StringBuilder result = new StringBuilder(new string(' ', text.Length));

            //cikls kas iet cauri teikuma centram
            for (int i = 0; i <= mid; i++)
            {
                //izreiķina kreiso un labo indeksu
                int left = mid - i;
                int right = mid + i;
                //ja kreisais indekss ir derīgs ievieto StringBuilder
                if (left >= 0) result[left] = text[left];
                //ja labais indekss ir derīgs ievieto StringBuilder
                if (right < text.Length) result[right] = text[right];

                //izvada StringBuilder saturu
                Console.WriteLine(result.ToString());
            }
        }

        //pakāpeniski izdzēš teikumu no centr
        void erasefromcenter(string text)
        {
            //izreiķina teikuma vidējo punktu
            int mid = text.Length / 2;
            //pārvērš teikumu par rakstzīmju masīvu
            char[] arr = text.ToCharArray();

            //cikls kas iet cauri teikuma centram
            for (int i = 0; i <= mid; i++)
            {
                //izreiķina kreiso un labo indeksu
                int left = mid - i;
                int right = mid + i;
                //ja kreisais indekss ir derīgs aizvieto burtu ar atstarpi
                if (left >= 0) arr[left] = ' ';
                //ja labais indekss ir derīgs aizvieto burtu ar atstarpi
                if (right < text.Length) arr[right] = ' ';

                //Izvada rakstzīmju masīvu
                Console.WriteLine(new string(arr));
            }
        }

        //pakāpeniski izvada teikuma beigu daļas sakot no pedējā burta
        void showdromendascending(string text)
        {
           
            for (int i = 1; i <= text.Length; i++)
            {
                //izvada teikuma apakšvirkni
                Console.WriteLine(text.Substring(text.Length - i));
            }
        }
    }
}