import java.io.*;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Solution {

	public static void main(String[] args) throws Exception {
		BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
		ArrayList<String> list = new ArrayList<String>();
		for (int i = 0; i < 5; i++)
		{
			list.add(rd.readLine());
		}

		for (int i = 0; i < 13; i++)
		{
			list.add(0, list.get(list.size()-1));
			list.remove(list.size()-1);
		}

		for (int i = 0; i < 5; i++)
		{
			System.out.println(list.get(i));
		}
	}
}
Для начала как я сделал самостоятельно:
for (int i = 0; i < 13; i++)
		{
			list.add(0, list.get(4));
			list.remove(list.remove(4));
		}
Не понимаю, в чем проблема этого кода. Берем последний элемент массива, вставляем в начало, удаляем последний элемент, но судя по результатам компиляции это совсем не так. В ходе экспериментов над кодом оставил просто вот так:
for (int i = 0; i < 13; i++)
		{
			list.add(0, list.get(4));
		}
Вывод этого кода аналогичен правильному, который я привел в самом начале. Объясните мне пожалуйста, чем эти три варианта отличаются?