Stereolitografi (SLA) er en 3D-utskriftsteknikk for å herde flytende materiale til et fast objekt ett lag om gangen ved hjelp av en laser. I denne oppgaven ser vi på en 2D-forenkling av SLA der designet til objektet som skrives ut kan representeres som et rektangulært rutenett av tegnene # og ., der # representerer en rutenettcelle som er opptatt av objektet og . er tomt rom. Her er for eksempel et $4 \times 8$-design:
..#..... ..#..#.. #.#.##.. #.#####.
Et design trenger ikke å bestå av ett enkelt sammenhengende stykke, men med unntak av #-celler på den nederste raden i designet, må hver #-celle støttes av en annen #-celle rett under den.
Utskrift av et objekt med SLA foregår lag for lag, med start fra den nederste raden. Først oversvømmes alle cellene i raden med en flytende lysfølsom harpiks. Deretter sveiper en laser over raden, herder harpiksen i alle #-celler til et fast stoff og hopper over alle .-celler. Så renner gjenværende væske til venstre for den #-cellen som er lengst til venstre og til høyre for den #-cellen som er lengst til høyre bort. Annen væske forblir fanget. (Hvis det ikke er noen #-celler i raden — noe som bare kan skje for rader nær toppen av designet, etter at objektet er ferdig skrevet ut — renner all væske bort fra raden.) Denne prosessen gjentas deretter for hver påfølgende rad. For designet ovenfor, etter at utskriften er fullført, forblir harpiks fanget i alle cellene som er markert med tegnet ~ nedenfor:
..#..... ..#~~#.. #~#~##.. #~#####.
Mens du manuelt suger ut den gjenværende harpiksen fra objektet, begynner du å lure på: hvor mye av det opprinnelige designet kan gjenopprettes ved bare å vite hvor mye flytende harpiks som er igjen i hver rad av designet etter utskrift? For designet ovenfor er mengden gjenværende harpiks i hver rad (startende fra toppen av designet) $0, 2, 2, 1$. Andre design har også det samme fotavtrykket av gjenværende harpiks; for eksempel:
.... #..# #..# #.##
Gitt en liste over hvor mange celler med flytende harpiks som er igjen i hver rad (startende fra den øverste raden), skriv ut bredden på det smaleste objektdesignet hvis rader ville inneholdt disse mengdene med flytende harpiks etter utskrift. Hvis det ikke finnes noe slikt design, skriv ut impossible.
Inndata
Den første linjen i inndataen inneholder et enkelt heltall $N$ ($1 \le N \le 10^5$), antallet rader i objektdesignet. Deretter følger $N$ linjer, som hver inneholder et enkelt heltall $x$ ($0 \le x \le 10^9$), antallet celler med gjenværende flytende harpiks i hver rad av det ønskede objektdesignet (i rekkefølge ovenfra og ned).
Minst én rad vil ha minst én gjenværende celle med flytende harpiks.
Utdata
Skriv ut bredden (antallet kolonner) i det smaleste objektdesignet der antallet celler med gjenværende flytende harpiks i hver rad samsvarer med inndataen. («Smaleste» betyr å ha minst mulig antall kolonner). Hvis det ikke finnes noe slikt design, skriv ut impossible i stedet.
Eksempler
Inndata 1
4 0 2 2 1
Utdata 1
4
Inndata 2
3 4 0 4
Utdata 2
11
Forklaring
Eksempel 1 tilsvarer eksempelet ovenfor. Et smalest mulig design for eksempel 2 er:
#....#..... ######..... ######....#