Problem p02756 (python)

Fixed submission:
#前・左につける変数、後ろ・右につける変数を用意して最後に足す
#前・左は最後にひっくり返す（abc ⇒cba)

#初期入力
import sys
input = sys.stdin.readline
S = input()
S=S.strip("\n")
Q = int(input())
FQ_dic={}
for i in range(Q):
    FQ_dic[i] =input().split()

rev =0
front =""
back =""

for i in range(Q):
   # print(S) 

    if FQ_dic[i][0] =="1": #逆転する
                rev +=1
    else:                   #逆転なし  
        if FQ_dic[i][1]=="1":     #前=左につける 
            if rev %2 ==0:
                front += FQ_dic[i][2]
            else:
                back  += FQ_dic[i][2]  
        else: #                      #後ろ=右につける
            if rev %2 ==0:
                back  += FQ_dic[i][2]  
            else:        
                front += FQ_dic[i][2]
front =front[::-1]
S =front + S + back

if rev %2 ==0:
    print(*S,sep="")
else:
    print(*S[::-1],sep="")

Buggy submission (verdict: Runtime Error):
#タプルを深くしたまま進め、速度アップ？

def flatten_list_tuple_range(l):#深いパックをアンパック
    for el in l:
        if isinstance(el, (list, tuple, range)):
            yield from flatten_list_tuple_range(el)
        else:
            yield el

#初期入力
import sys
input = sys.stdin.readline
S = input().split()
S=S[0]
#print(S)
Q = int(input())
FQ_dic =tuple()
rev =0
for i in range(Q):
    FQ_dic =tuple(input().split())

    if      FQ_dic[0] =="1": #逆転する
                rev +=1
    else:                   #逆転なし  
        if      FQ_dic[1]=="1":     #前=左につける 
            if rev %2 ==0:
                    S = FQ_dic[2] ,S 
            else:
                    S = S,FQ_dic[2]
        else: #                      #後ろ=右につける
            if rev %2 ==0:
                    S = S ,FQ_dic[2] 
            else:        
                    S = FQ_dic[2] ,S
#print(S)
S =flatten_list_tuple_range(S)
S=[i for i in S] #理由は？だが1回リストにすると見える
#print(S)
S="".join(S) #最初の文字も連動するため
#print(S)
#逆転の回数で場合分け
if rev %2 ==0:
    print(*S,sep="")
else:
    print(*S[::-1],sep="")

Buggy submission (verdict: Runtime Error):
#タプルを深くしたまま進め、速度アップ？
#初期入力
import sys
input = sys.stdin.readline
S = input().split()
S=S[0]
Q = int(input())
FQ_dic =tuple()
rev =0
for i in range(Q):
    FQ_dic =tuple(input().split())

    if      FQ_dic[0] =="1": #逆転する
                rev +=1
    else:                   #逆転なし  
        if      FQ_dic[1]=="1":     #後ろにつける
            if rev %2 ==0:
                    S = FQ_dic[2] , S
            else:
                    S = S ,FQ_dic[2] 
        else: #                      #前につける
            if rev %2 ==0:
                    S = S , FQ_dic[2]
            else:        
                    S = FQ_dic[2] , S

#深いパックをアンパック
def flatten_list_tuple_range(l):
    for el in l:
        if isinstance(el, (list, tuple, range)):
            yield from flatten_list_tuple_range(el)
        else:
            yield el
S =flatten_list_tuple_range(S)
S=[i for i in S]

#逆転の回数で場合分け
if rev %2 ==0:
    print(*S,sep="")
else:
    print(*S[::-1],sep="")

Buggy submission (verdict: Runtime Error):
#初期入力
import sys
input = sys.stdin.readline
S = input().split()
S=S[0]
Q = int(input())
FQ_dic =tuple()
rev =0
for i in range(Q):
    FQ_dic =tuple(input().split())

    if      FQ_dic[0] =="1": #逆転する
                rev +=1
    else:                   #逆転なし   
        if      FQ_dic[1]=="1":     #後ろにつける
            if rev %2 ==0:
                    S = FQ_dic[2] , *S
            else:
                    S = *S ,FQ_dic[2] 
        else: #                      #前につける
            if rev %2 ==0:
                    S = *S , FQ_dic[2]
            else:        
                    S = FQ_dic[2] , *S
if rev %2 ==0:
    print(*S,sep="")
else:
    print(*S[::-1],sep="")