Առաջադրանքների պատշաճ իրականացում

Արագ զարգացող տեխնոլոգիական ընկերությունում դուք աշխատում եք որպես նախագծի ղեկավար։ Չնայած դուք նոր եք անցել աշխատանքի, բայց ձեզ է հանձնվում բարդ և բազմազան առաջադրանքների ցանկը կառավարելու պատասխանատվությունը: Այս ցուցակը, սակայն, պարզ ցուցակ չէ, այլ հիերարխիկ բնույթ ունի, որտեղ յուրաքանչյուր առաջադրանք կարող է ունենալ իր հետ կապված բազմաթիվ ենթաառաջադրանքներ: Առաջադրանքը և ենթաառաջադրանքները ներկայացված են ներդիր ցուցակում, որտեղ յուրաքանչյուր տարր կա՛մ մեկ առաջադրանք է (որպես տող), կա՛մ ենթախնդիրների ցանկ:
Ձեր խնդիրն է գրել ռեկուրսիվ ֆունկցիա, որը կանցնի այս հիերարխիայով և կտպի բոլոր առաջադրանքները և ենթաառաջադրանքներն ա՛յն հերթականությամբ, որով դրանք հայտնվում են ներդրված ցանկում: Ելքում յուրաքանչյուր ենթաառաջադրանք պետք է լինի մեկ մատ խորքից, որպեսզի ցանկը լինի դյուրընթեռնելի և հասկանալի։
Մուտքում տրված է «n» առաջադրանքների և ենթաառաջադրանքների ներդիր ցուցակ: Ցանկի յուրաքանչյուր տարր կա՛մ առաջադրանք է (որպես տող), կա՛մ մեկ այլ ցուցակ, որը ներկայացնում է ենթաառաջադրանքները: Կարող եք օգտագործել eval(input())-ը կամ json.loads(...)-ը մուտքի տվյալները ցուցակի վերածելու համար։
Ծրագիրը պետք է տպի բոլոր առաջադրանքները և ենթաառաջադրանքները որպես տողեր՝ պահպանելով ցուցակի հերթականությունը: Յուրաքանչյուր ենթաառաջադրանք պետք է լինի մեկ մատ խորքից՝ այսպիսով առանձնանալով իր հիմնական առաջադրանքից:
Մուտք
Ելք
["Task 1", ["Subtask 1.1", "Subtask 1.2", ["Subtask 1.2.1", "Subtask 1.2.2"], "Subtask 1.3"], "Task 2", ["Subtask 2.1"]]
Task 1 Subtask 1.1 Subtask 1.2 Subtask 1.2.1 Subtask 1.2.2 Subtask 1.3 Task 2 Subtask 2.1
Նշում․ ելքում յուրաքանչյուր tab (մեկ մատ խորք) ներկայացված է՝ \t նիշով (symbol): Բացի այդ, ելքի մեջ առաջադրանքների և ենթաառաջադրանքների հերթականությունը պետք է ունենա նույն հաջորդականությունը, ինչ մուտքագրված ցուցակում:
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue