AOJ volume 10023 Shuffle

import java.util.ArrayList;
import java.util.Scanner;


public class Shuffle {
	private static Scanner sc = new Scanner(System.in);
	private static ArrayList<Integer> numCardsShuffle = new ArrayList<Integer>();
	private static ArrayList<String> result = new ArrayList<String>();
	
	public static void main(String[] args) {
		doShuffles();
		printResult(result);
	}
	
	public static void doShuffles(){
		while(sc.hasNext()){
			String cards= getCards();
			if(cards == null){
				break;
			}
			setShuffleDetail();
			result.add(getCardsShuffled(cards, numCardsShuffle));
			numCardsShuffle.clear();
		}
	}
	
	private static String getCards(){
		//最初の並びをあらわす文字列を取得する
		String cards = sc.next();
		
		//入力終了文字(-)ならシャッフルのループから抜ける
		if(cards.compareTo("-") == 0){
			return null;
		}
		
		return cards;
	}
	
	private static void setShuffleDetail(){
		//シャッフル回数を得る
		int numShuffle = sc.nextInt();
	
		//何枚下からとるか得る
		for(int i = 0; i < numShuffle; i++){
			numCardsShuffle.add(sc.nextInt());
		}
	}
	
	public static String getCardsShuffled(String str, ArrayList<Integer> num){
		String deck = str;
		for(int i = 0; i < num.size(); i++){
			String downDeck = deck.substring(0, num.get(i));
			String upDeck = deck.substring(num.get(i), str.length());
			deck = upDeck + downDeck;
		}
		return deck;
	}
	
	private static void printResult(ArrayList<String> result){
		for(int i = 0; i < result.size(); i++){
			System.out.println(result.get(i));
		}
	}
}