/**


１つのアルファベットが描かれた n 枚のカードの山をシャッフルします。

1回のシャッフルでは、下から h 枚のカードをまとめて取り出し、それを残ったカードの山の上に積み上げます。

カードの山は以下のように１つの文字列で与えられます。

 */

//スキャナつかうため

import java.util.Scanner;

public class Main {
	// プログラムのエントリポイント
	public static void main(String[] args) {
		// 入力ストリームの生成

		Scanner sc = new Scanner(System.in);

		//受け取る文字列、回す数の数の変数宣言
		String strmoji ;
		int intSuuji ;
		//breakされるまで処理を繰り返す
		while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		}
	}
} import java.util.Scanner; Scanner java.util public class Main {
	// プログラムのエントリポイント
	public static void main(String[] args) {
		// 入力ストリームの生成

		Scanner sc = new Scanner(System.in);

		//受け取る文字列、回す数の数の変数宣言
		String strmoji ;
		int intSuuji ;
		//breakされるまで処理を繰り返す
		while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		}
	}
} Main // プログラムのエントリポイント
	public static void main(String[] args) {
		// 入力ストリームの生成

		Scanner sc = new Scanner(System.in);

		//受け取る文字列、回す数の数の変数宣言
		String strmoji ;
		int intSuuji ;
		//breakされるまで処理を繰り返す
		while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		}
	} main {
		// 入力ストリームの生成

		Scanner sc = new Scanner(System.in);

		//受け取る文字列、回す数の数の変数宣言
		String strmoji ;
		int intSuuji ;
		//breakされるまで処理を繰り返す
		while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String strmoji ; strmoji int intSuuji ; intSuuji while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		} true {
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		} strmoji = sc.next() strmoji sc.next() sc.next sc if(strmoji.contains("-")){
                break;
			} strmoji.contains("-") strmoji.contains strmoji "-" {
                break;
			} break; intSuuji = sc.nextInt() intSuuji sc.nextInt() sc.nextInt sc for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			} int i = 0; int i = 0; i 0 i < intSuuji i intSuuji i ++ i ++ i {
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			} {
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			} int intMawasu = sc.nextInt(); intMawasu sc.nextInt() sc.nextInt sc String strirekae1 = strmoji.substring(0,intMawasu); strirekae1 strmoji.substring(0,intMawasu) strmoji.substring strmoji 0 intMawasu String strirekae2 = strmoji.substring(intMawasu,strmoji.length()); strirekae2 strmoji.substring(intMawasu,strmoji.length()) strmoji.substring strmoji intMawasu strmoji.length() strmoji.length strmoji strmoji= strirekae2+strirekae1 strmoji strirekae2+strirekae1 strirekae2 strirekae1 System.out.println(strmoji) System.out.println System.out System System.out strmoji String[] args args public class Main {
	// プログラムのエントリポイント
	public static void main(String[] args) {
		// 入力ストリームの生成

		Scanner sc = new Scanner(System.in);

		//受け取る文字列、回す数の数の変数宣言
		String strmoji ;
		int intSuuji ;
		//breakされるまで処理を繰り返す
		while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		}
	}
} public class Main {
	// プログラムのエントリポイント
	public static void main(String[] args) {
		// 入力ストリームの生成

		Scanner sc = new Scanner(System.in);

		//受け取る文字列、回す数の数の変数宣言
		String strmoji ;
		int intSuuji ;
		//breakされるまで処理を繰り返す
		while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		}
	}
} Main
/**


１つのアルファベットが描かれた n 枚のカードの山をシャッフルします。

1回のシャッフルでは、下から h 枚のカードをまとめて取り出し、それを残ったカードの山の上に積み上げます。

カードの山は以下のように１つの文字列で与えられます。

 */

//スキャナつかうため

import java.util.Scanner;

public class Main {
	// プログラムのエントリポイント
	public static void main(String[] args) {
		// 入力ストリームの生成

		Scanner sc = new Scanner(System.in);

		//受け取る文字列、回す数の数の変数宣言
		String strmoji ;
		int intSuuji ;
		//breakされるまで処理を繰り返す
		while(true ){
			//文字列を受け取る
			strmoji = sc.next();
			//受け取った文字列がーだった場合breakする
			if(strmoji.contains("-")){
                break;
			}
			//受け取る数字の数を受け取る
			intSuuji = sc.nextInt();
			//受け取った数の回数処理を繰り返す
			for (int i = 0; i < intSuuji ; i ++){
					//シャッフルする数を受け取る
				int intMawasu = sc.nextInt();
				//strmojiの０からintmawasuの数 , intmawasuの数から文字列の最大の長さを
				//入れ替え変数にいれる
				String strirekae1 = strmoji.substring(0,intMawasu);
                String strirekae2 = strmoji.substring(intMawasu,strmoji.length());
                //分けた文字列を逆にして、strmojiに入れなおす。
                strmoji= strirekae2+strirekae1;


			}
			//結果表示
			System.out.println(strmoji);
		}
	}
}