package com.javarush.task.task19.task1927;

import java.io.*;

public class Solution {
    public static TestString testString = new TestString();

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

        //запоминаем настоящий PrintStream в специальную переменную
        PrintStream consoleStream = System.out;
        //Создаем динамический массив
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        //создаем адаптер к классу PrintStream
        PrintStream stream = new PrintStream(outputStream);
        //Устанавливаем его как текущий System.out
        System.setOut(stream);
        //Вызываем функцию, которая ничего не знает о наших манипуляциях
        testString.printSomething();
        //Преобразовываем записанные в наш ByteArray данные в правильные строки
        String[] subresult = outputStream.toString().split("\r\n");
        StringBuffer sb1 = new StringBuffer(subresult[0]);
        sb1.insert(subresult[0].length(),"\r\n");
        String result = sb1.toString();
        for (int i = 1; i < subresult.length; i++) {
            StringBuffer sb2 = new StringBuffer(subresult[i]);
            sb2.insert(subresult[i].length(),"\r\n");
            if (i % 2 == 0) result += "JavaRush - курсы Java онлайн\r\n" + sb2.toString();
            else result += sb2.toString();
        }
        if (subresult.length % 2 == 0)
            result += "JavaRush - курсы Java онлайн";
        //Возвращаем все как было
        System.setOut(consoleStream);
        //выводим ее в консоль
        System.out.println(result);
    }
    public static class TestString {
        public void printSomething() {
            System.out.println("first");
            System.out.println("second");
            System.out.println("third");
            System.out.println("fourth");
            System.out.println("fifth");
        }
    }
}