Память компьютера состоит из n ячеек, которые выстроены в ряд. Пронумеруем ячейки от 1 до n слева направо. Про каждую ячейку известно, свободна она или принадлежит какому-либо процессу (в таком случае известен процесс, которому она принадлежит).Для каждого процесса известно, что принадлежащие ему ячейки занимают в памяти непрерывный участок. С помощью операций вида «переписать данные из занятой ячейки в свободную, а занятую теперь считать свободной» требуется расположить все принадлежащие процессам ячейки в начале памяти компьютера. Другими словами, любая свободная ячейка должна располагаться правее (иметь больший номер) любой занятой.Вам необходимо найти минимальное количество операций переписывания данных из одной ячейки в другую, с помощью которых можно достичь описанных условий. Допустимо, что относительный порядок ячеек в памяти для каждого из процессов изменится после дефрагментации, но относительный порядок самих процессов должен остаться без изменений. Это значит, что если все ячейки, принадлежащие процессу i, находились в памяти раньше всех ячеек процесса j, то и после перемещений это условие должно выполняться.Считайте, что номера всех процессов уникальны, хотя бы одна ячейка памяти занята каким-либо процессом.

В первой строке входных данных записано число n (1 ≤ n ≤ 200 000) — количество ячеек в памяти компьютера. Во второй строке входных данных следуют n целых чисел a1, a2, ..., an (1 ≤ ai ≤ n), где ai равно либо 0 (это означает, что i-я ячейка памяти свободна), либо номеру процесса, которому принадлежит i-я ячейка памяти. Гарантируется, что хотя бы одно значение ai не равно 0. Процессы пронумерованы целыми числами от 1 до n в произвольном порядке. При этом процессы не обязательно пронумерованы последовательными числами.

Выведите одно целое число — минимальное количество операций, которое нужно сделать для дефрагментации памяти.

ПримечаниеВ первом тестовом примере достаточно двух операций:  Переписать данные из третьей ячейки в первую. После этого память компьютера примет вид: 2 2 0 1.  Переписать данные из четвертой ячейки в третью. После этого память компьютера примет вид: 2 2 1 0.

var
  a, b : array [1..200000] of longint;
  i, k, ans, n : longint;
begin
  read(n);
  k := 1;
  for i := 1 to n do
    begin
      read(a[i]);
      if a[i] > 0
        then
          begin
            b[k] := a[i];
            inc(k);
          end;
    end;
  for i := 1 to k - 1 do
    if a[i] <> b[i]
      then
        begin
          inc(ans);

        end;
  writeln(ans);
end.

program _4;
var n, i, s, k, c, a, t: longint;
procedure cnt;
begin
if c>k then s:=s+k else s:=s+c;
end;
begin
readln(n);
t:=0;
for i:=1 to n do begin
    read(a);
    if a=0 then begin if t<>0 then cnt; t:=0; k:=k+1; continue end;
    if (t<>0) and (a=t) then c:=c+1;
    if (t=0) then begin c:=1; t:=a end;
    if (t<>0) and (a<>t) then begin cnt; t:=a; c:=1; end;
end;
if a=0 then begin writeln(s); exit end;
if (t<>0) and (a=t) then cnt;
if (t=0) then begin c:=1; t:=a; cnt end;
if (t<>0) and (a<>t) then begin cnt; t:=a; c:=1; end;
writeln(s);
end.

program D_2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
i,j,n,k,
startS,finishS,op:longint;
a:array[0..200010] of longint;
function min(a,b:longint):longint;
begin
if (b<a) then min:=b else min:=a;
end;
begin
readln(n);
for i:=1 to n do
read(a[i]);
a[0]:=-1;
a[n+1]:=-1;
k:=0;
for i:=1 to n do
  begin
  if (a[i]=0) then
    begin
    inc(k);
    end
    else
    begin
    if (a[i]<>a[i-1]) then startS:=i;
    if (a[i]<>a[i+1]) then
      begin
      finishS:=i;
      if (k>0) then begin op:=op+min(k,finishS-startS+1); end;
      end;
    end;
  end;
  writeln(op);
end.


You have an initially empty cauldron, and you want to brew a potion in it. The potion consists of two ingredients: magic essence and water. The potion you want to brew should contain exactly $$$k\ \%$$$ magic essence and $$$(100 - k)\ \%$$$ water.In one step, you can pour either one liter of magic essence or one liter of water into the cauldron. What is the minimum number of steps to brew a potion? You don't care about the total volume of the potion, only about the ratio between magic essence and water in it.A small reminder: if you pour $$$e$$$ liters of essence and $$$w$$$ liters of water ($$$e + w > 0$$$) into the cauldron, then it contains $$$\frac{e}{e + w} \cdot 100\ \%$$$ (without rounding) magic essence and $$$\frac{w}{e + w} \cdot 100\ \%$$$ water.

The first line contains the single $$$t$$$ ($$$1 \le t \le 100$$$) — the number of test cases. The first and only line of each test case contains a single integer $$$k$$$ ($$$1 \le k \le 100$$$) — the percentage of essence in a good potion.

For each test case, print the minimum number of steps to brew a good potion. It can be proved that it's always possible to achieve it in a finite number of steps.

NoteIn the first test case, you should pour $$$3$$$ liters of magic essence and $$$97$$$ liters of water into the cauldron to get a potion with $$$3\ \%$$$ of magic essence.In the second test case, you can pour only $$$1$$$ liter of essence to get a potion with $$$100\ \%$$$ of magic essence.In the third test case, you can pour $$$1$$$ liter of magic essence and $$$3$$$ liters of water.

uses
  Math;

var
  t, step, k, mn, i, j: longint;

begin
  readln(t);
  for step := 1 to t do begin
    readln(k);

    mn := 100;
    for i := 1 to 100 do
      for j := 0 to 100 do
        if (i * 100 div (i + j) = k) and (i * 100 mod (i + j) = 0) and (i + j < mn) then begin
          if i + j = 26 then
            writeln(i, ' ', j);
          mn := i + j;
        end;

    writeln(mn);
  end;
end.

   const eps=1e-14;
   besk=4000000000000000000; label 55,5,4,1,3,2,44,22;
   type
   mas=array[-20000..1704060+1] of int64;
   integer=longint;   zap=record  p1,p2,p3:int64; end;
   zap1=^zap;
   var  razm,poss,mm,tip,ppos1,oldtt,ps,pos1,pos2,pred,color,buk,cur,init,res,oldpos,i1,j1,mask,stepp,n2,i,j,k,l,step,k1,mesto:longint;
   sss:array[-1..1000] of string;
   ss4,oldss,smin,ss3,ss,ss1,ss2:string;
   newaans,aans:zap;
   otr1,otr0,d0,d1,d2,vx,vy,ddist,tttt:extended;
   pqqq:zap;
   gam,al0,otal,al1,al2,acc, disk,prop,bet,al:extended; fl1,fl2,fl:boolean;
   dr3,dr1,dr2,pt,ott1,ott2:zap;
   pos,time,ost,zz,x:array[-1000..4100000] of int64;
   stroka,sss1,sss2:array[-10..1200000] of char;
   v3,v1,v2,pointx,pointy,vel,tt0,radius,ote,ddl,dl1,dl2:extended;
   dd1,ddpos:array[-2..14,-200..65400] of int64;
   kolpotom,pospotom,zx,zy,z,kol,xxx,yyy,invfact,y,ansx,ansy,ugol,xx,yy:array[-1000..4100000] of int64;
   mright,pol,dx,dy:array[-100..1850000] of int64;
   il,jl,ig,jg,iw,jw,ib,jb,ie,je,ott,posx,posy,p,mnog,ii,jj,ttt,delta,tt1,tt2,sum,left,right,koll,newt,osn,oldot,num,oldt,ll,rr,znmax,aa,ot,t11,t01,t10,t00,opld,nap,t4,kk,dl,iii,jjj,aaa,bbb,ccc,bb,p0,t,xmax,xmin,ymax,ymin,newpos,newdl,len,pp3,ans1,ans2,modul,t0,t1,t2,dloch,koldel,mmax,stepen,pq,pp1,pp2,period, dolg,ot1,ot2,oldgr,predsum,pmin,tmin,kool,number,imin,qq,n,m,numpos,down,imax,t3,qq1,qq2,q1,q2,w,p3,p4,pmax,pmax2,p1,p2,hh,pos0,pp,maxot,tmax,nn,n1,q:int64; flag1:boolean;
   b1,a1,b,c,a,zzz,fact,stan,a2,invx,invy,place,str,b2,z1,sum1,sum0,d:mas; flag2,flag:boolean;  pl:longint;
   kkol,i2,j2,ans,tt,sdvig,start,finish,izb, oldmax,newmax,posmax,zapas,razn,oldll,oldrr,ppp,minx,miny,maxx,maxy,kolplus,kolminus,razr,jmax,gr,grr,ener,dob,cc,ugg,r,ug:int64;
   prost,zzan,zann:array[-10..2001001] of boolean;
   newzan,zan:array[-1000000..4000000] of boolean;
   zanx,marked:array[-1000000..4100000] of boolean;
   path,dd,ddnew,dleft,dnomer:array[-1..521,-1..521,0..21] of int64;
   ochh,newochh:array[0..4000000] of longint;
   first,last,kolnenul,next1,next0,prev1,prev0,newoch,och,lx,a3,b3,predok:array[-20000..4500000] of int64;
   ddsum,ddd:array[-400..265200,-1..10] of int64;
   sumgor,pole,newpole:array[-100..2300,-100..2300] of char;
   newpolest,polest:array[-100..2300,-100..2300] of int64;
   polest1:array[-1..11,-10..230,-10..230] of int64;

   ssan,ssans,bufer:array[-1000..1000000] of char;
   cosa,sina,cosb,sinb,rx,ry,px,py,h1,h2,h,l1,l2,otmax,v:int64;
   obmen,ch:char;
   mmat:array[0..200001,0..9,0..9] of int64;
   flagg,fflag,ok,flagg1:boolean;
   koled,oldx,oldy,numx,numy,xleft,xright,s,newplace,newstr,next,prev,aold:array[-1000..4200002] of int64;
   function srav(i,j:longint):boolean; label 44;
   begin
      if (a[i]<a[j]) then begin srav:=true; goto 44;  end;
      if a[i]>a[j] then begin  srav:=false; goto 44;   end;
      if a[i]=a[j] then if a1[i]<a1[j] then srav:=true else srav:=false;
      if (a[i]=a[j])and(a1[i]=a1[j]) then  if a2[i]<a2[j] then srav:=true else srav:=false;
       44:
   end;

  procedure sl (k,l,m:integer);  {k- dlina, l,m - nachalo dvuh blokov}
  begin
    i:=l;j:=m; flag:=true; step:=0;while flag do begin
    if (srav(i,j)) then begin begin b[l+step]:=a[i];b1[l+step]:=a1[i];b2[l+step]:=a2[i];b3[l+step]:=a3[i];end;
    inc(step);inc(i);
    {writeln('step=',step,' i=',i);} end;
    if (not srav(i,j)) then begin begin b[l+step]:=a[j];b1[l+step]:=a1[j];b2[l+step]:=a2[j];b3[l+step]:=a3[j];end;
    inc(step);inc(j);end;
    if  ((i>=l+k) or (j>=m+k)) then flag:=false;
    end;
    if(i>=l+k) then repeat b[l+step]:=a[j];b1[l+step]:=a1[j];b2[l+step]:=a2[j]; b3[l+step]:=a3[j];
    inc(step);inc(j);until (j>=m+k);
    if(j>=m+k) then repeat b[l+step]:=a[i];b1[l+step]:=a1[i];b2[l+step]:=a2[i];  b3[l+step]:=a3[i];inc(step);inc(i);until (i>=l+k);
  end;

  procedure sort(var c:mas);
  begin
  k:=1; repeat
  l:=1;m:=k+l; repeat sl(k,l,m); l:=l+2*k;m:=m+2*k; until (l>=n); k:=k*2; { writeln('dl bloka= ',k); }
  for i:=1 to n do begin a[i]:=b[i];a1[i]:=b1[i];a2[i]:=b2[i];a3[i]:=b3[i]; end;
  until (k>=n);
  end;

   function min (a,b:int64):int64;begin min:=b;if a<b then min:=a;  end;
   function max (a,b:int64):int64; begin max:=b;if a>b then max:=a;  end;
   function evkl(a,b:int64):zap1; var d,x,y,r,q,i,j,k,x1,x2,y1,y2:int64;
    tt:zap; tt1:zap1;  fl:boolean;
       begin
           fl:=false;
           if a<b then begin r:=a;a:=b;b:=r; fl:=true; end;
           x2:=1;x1:=0;y2:=0;y1:=1;
           while b>0 do
           begin q:=a div b; r:=a mod b; x:=x2-q*x1;y:=y2-q*y1;
           a:=b;b:=r;x2:=x1;x1:=x;y2:=y1;y1:=y;
           end;
          if not fl then begin d:=a; x:=x2;y:=y2; tt.p1:=d;tt.p2:=x;tt.p3:=y; tt1:=@tt; end else
          begin d:=a; x:=x2;y:=y2; tt.p1:=d;tt.p2:=y;tt.p3:=x; tt1:=@tt; end;
          evkl:=tt1;
       end;
      function phi(a,b:double):double; label 222;var p:double;
        begin
           if (a>0)and (b>=0) then begin p:=arctan(b/a);goto 222; end;
           if (a<0) then begin p:=pi+arctan(b/a);goto 222; end;
           if (a>0)and (b<0) then begin p:=2*pi+arctan(b/a);goto 222; end;
           if (a=0)and (b>0) then begin p:=pi/2;goto 222; end;
           if (a=0)and (b<0) then begin p:=3*pi/2;goto 222; end;
           222: phi:=p;
        end;

          function nod(a,b:int64):int64; var p,t:int64;
             begin
             a:=abs(a); b:=abs(b);
             if (a>0)and(b>0) then
             begin while (b>0) do begin t:=a mod b;a:=b;b:=t;    end;
             p:=a;
             end else if a=0 then p:=b else p:=a;
             nod:=p;
          end;

         function arccos(tt:extended):extended;
             begin
               if abs(tt)>1-1e-13 then
               if tt>0 then  arccos:=0 else arccos:=pi;
               if tt=0 then arccos:=pi/2 else
               if abs(tt)<=1-1e-13 then if tt>=0 then arccos:=arctan(sqrt(1-tt*tt)/tt)
                else arccos:=pi+arctan(sqrt(1-tt*tt)/tt);
             end;

        function degg(a,k,modul:int64):int64; var p:int64;    label 4;
              begin
               if k<=0 then degg:=1
                else if odd(k) then degg:=(degg(a,k-1,modul)*a) mod modul  else
                begin  p:=degg(a,k div 2,modul);  degg:=(p*p) mod modul;    end;
              end;

function zaprmax(left,right:longint):int64;
  begin
   if left>=right then zaprmax:=y[left] else
    begin
     if not odd(left) and odd(right) then zaprmax:=zaprmax(left shr 1,right shr 1) else
      begin
       if odd(left) then zaprmax:=max(zaprmax(left+1,right),y[left]);
       if not odd(right) then zaprmax:=max(zaprmax(left,right-1),y[right]);
      end;
    end;
  end;

                 procedure udal(ii:longint);
                 begin  next[prev[ii]]:=next[ii];prev[next[ii]]:=prev[ii];  end;

     function pprost(pp:int64):boolean;
       var i,j,t:longint; tt:extended; fl:boolean;
     begin
        tt:=pp;
        tt:=sqrt(tt);
        fl:=true;
        for i:=2 to round(tt) do if pp mod i=0 then  fl:=false;
        pprost:=fl;
     end;

    function gl(c:char):boolean;
       begin
       if (c='a')or (c='o')or(c='e')or(c='i')or(c='u') then gl:=true else gl:=false;
       end;
{        function slog(d1,d2:zap):zap1;
        var t,tt,p,q:int64; ans:zap;
     begin
        p:=d1.x*d2.y+d1.y*d2.x;
        q:=d1.y*d2.y;
        t:=nod(p,q);
        p:=p div t; q:=q div t;
        ans.x:=p mod modul;ans.y:=q mod modul;
        slog:=@ans;
     end;

    function umn(d1,d2:zap):zap1;
     var t,tt,p,q:int64; ans:zap;
     begin
      p:=d1.x*d2.x;
      q:=d1.y*d2.y;
      t:=nod(p,q);
      p:=p div t; q:=q div t;
      ans.x:=p mod modul;ans.y:=q mod modul;
      umn:=@ans;
     end;

      function sravfr(d1,d2:zap):boolean;
        begin
         if  d1.x*d2.y<d2.x*d1.y then sravfr:=true else sravfr:=false;
        end;
          }
    function bincoef(ii,jj:longint):int64;
        var t1,t2,t3,p1,p2,p3,ot:int64;
     begin
         if ii>=jj then
         begin
           p1:=fact[ii];
           p2:=fact[jj];
           p3:=fact[ii-jj];
           t2:=degg(p2,modul-2,modul);
           t3:=degg(p3,modul-2,modul);
           ot:=((p1*t2) mod modul*t3) mod modul;
           bincoef:=ot;
         end  else bincoef:=0;
      end;

        function bincoef1(ii,jj:longint):int64;
         var t1,t2,t3,p1,p2,p3,ot:int64;
   begin
       if ii>=jj then
       begin
       p1:=fact[ii];
       p2:=invfact[jj];
       p3:=invfact[ii-jj];
       ot:=((p1*p2) mod modul*p3) mod modul;
        bincoef1:=ot;
        end  else bincoef1:=0;
   end;

        procedure pech;
      var j,i:longint;
        begin
           for i:=1 to p do begin for j:=1 to p do if zan[i] then write('*') else write('.'); writeln;  end;
           writeln;
           {writeln('ot= ',ot); }
        end;

 function zapr(tip,i,j,aa:int64):int64;
var ot:longint;
 begin  if tip=1 then ot:=max(min(a[i],aa),min(a[j],aa+1)) else ot:=min(max(a[i],aa),max(a[j],aa+1));    zapr:=ot; end;

begin

   {  assign (input,'D:\Projects\input.txt');reset(input);
     assign (output,'D:\Projects\output.txt'); rewrite(output);
    }

     readln(qq);
   for stepp:=1 to qq do
     begin
         read(p);
         t:=nod(p,100);
         writeln(100 div t);

     end;

    1: close (output);

end.

Var
     k,t,o,i,j: Longint;
Begin
  Readln(t);
  For i :=1 To t Do
    Begin
      Readln(k);
      For j := 1 To k Do
        If (k Mod j = 0) And (100 Mod j = 0) Then o := j;
      Writeln(100 Div o);
    End;
End.

Var
     k,t: Longint;
Function gcd(a,b:Longint): Longint;
Var
  t: Longint;
Begin
  While b <> 0 Do
    Begin
      t := b;
      b := a Mod b;
      a := t;
    End;
  gcd := a
End;
Begin
  Readln(t);
  For t:=1 To t Do
    Begin
      Readln(k);
      Writeln(100 Div gcd(100,k));
    End;
End.

Var
     a,b,t: Longint;

Function gcd(a,b:Longint): Longint;
Begin
  If b=0 Then Exit(a);
  Exit(gcd(b,a Mod b));
End;
Begin
  Readln(t);
  For t:=1 To t Do
    Begin
      Readln(a);
      Writeln(100 Div gcd(100,a));
    End;
End.

var     t,j,n,a,b:byte;
begin
        readln(t);
        for j:=1 to t do begin
                readln(n);
                        t:=1;
                        a:=100;
                        b:=n;
                        while t<>0 do begin
                                t:=a mod b;
                                a:=b;
                                b:=t;
                        end;
                        writeln(100 div a);
        end;
end.

var t,i,a,b,d:integer;
function uc(a,b:integer):integer;
var x,y,t:integer;
begin
  x:=a;y:=b;
  t:=y mod x;
  while t<>0 do
    begin
      t:=x mod y;x:=y;y:=t;
    end;
  uc:=x;
end;
begin
  readln(t);
  for i:=1 to t do
    begin
      readln(a);
      b:=100-a;
      d:=uc(a,b);
      writeln(a div d+b div d);
    end;
end.

var count,k,t:LongInt;

procedure gcd(x,y:longint);
var i,j:longint;
begin
  if x>y then x:=x-y;
  if y>x then y:=y-x;
  if x=y then count:=x
  else
  gcd(x,y);
end;

procedure nhapfile;
var i,j:longint;
begin
  readln(t);
  while t<>0 do
  begin
    readln(k);
    if 100 mod k=0 then writeln(100 div k)
    else
    begin
      gcd(k,100);
      writeln(100 div count);
    end;
    dec(t);
  end;
end;

begin
  nhapfile;
end.

var a,b,t:longint;
function gcd(a,b:longint):longint;
begin
  if b=0 then exit(a);
  exit(gcd(b,a mod b));
end;
begin
  readln(t);
  for t:=1 to t do
  begin
    readln(a);
    writeln(100 div gcd(100,a));
  end;
end.

Uses wincrt;
Var
c,i,k,m, t:integer;
a, b, d, e:boolean;
Begin
Readln(c) ;
For i:=1 to c do begin
Readln(k) ;
m:=0;
t:=k;
Repeat
m:=m+1;
If k mod 2=0 then k:=k div 2;
If k mod 5=0 then k:=k div 5;
Until m=2;
Writeln((100*k) div t) ;
End;
End.

var k,r,t:longint;
function gcd(a,b:qword):qword;
var t:qword;
    begin
      t:=a mod b;
        while t<>0 do
          begin
            t:=b mod a;
            b:=a;
            a:=t;
          end;
        gcd:=b;
    end;
begin
   read(t);writeln;
     for r:=1 to t do
       begin
         read(k);
         writeln(100 div gcd(100,k));
       end;
end.

var
a,t,i:longint;
function gcd(x,y:longint):longint;
begin
 if y=0 then exit(x);
 exit(gcd(y,x mod y));
end;
begin
 readln(t);
 for i:=1 to t do
 begin
  readln(a);
  writeln(100 div gcd(100,a));
 end;
end.

var
    t: longint;

function gcd(a, b: longint): longint;
begin
    if (a = 0) then exit(b)
    else exit(gcd(b mod a, a));
end;

procedure solve;
var
    k, water, magic, g: longint;
begin
    readln(k);
    g := gcd(k, 100 - k);
    water := (100 - k) div g;
    magic := k div g;
    writeln(water + magic);
end;

begin
    readln(t);
    while (t > 0) do
    begin
        solve;
        dec(t);
    end;
end.

var a,b:array[0..200001]of  int64;s,k:int64;j,m,q,t,i,n:longint;
PROCEDURE HV(VAR a,b:int64);
VAR   tmp:int64;
BEGIN
     tmp:=a;a:=b;b:=tmp;
END;

PROCEDURE QS(l,r:longint);
VAR   i,j,k:longint;
BEGIN
     i:=l;j:=r;k:=a[(l+r)div 2];
     REPEAT
           WHILE a[i]<k DO i:=i+1;
           WHILE a[j]>k DO j:=j-1;
           IF i<=j THEN
              BEGIN
                   HV(a[i],a[j]);
                   i:=i+1;j:=j-1;
              END;
     UNTIL i>j;
     IF i<r THEN QS(i,r);
     IF l<j THEN QS(l,j);
END;
begin
  read(q);
  for t:=1 to q do
  begin
  read(n);if (n=100)or(n=0) then writeln(1) else begin
 m:=100-n;  i:= n mod m;
 while i>0 do
 begin
 n:=m;m:=i;
 i:= n mod m;
 end;
 writeln(100 div m)
     end end
end.

var a,b,n,i:int64;
ot:string;
begin
read(n);
for i:=1 to n do
 begin
 read (a);
 b:=100;
 while (a>0) and (b>0) do
  if a>b then a:=a mod b
         else b:=b mod a;
 ot := ot +(100 div (a+b))+#10;
  end;
write(ot);
end.

Var
     t,i,k: Integer;
Begin
  Readln(t);
  For i := 1 To t Do
    Begin
      Readln(k);
      If 100 Mod k = 0 Then Writeln(100 Div k)
      Else Writeln(100);
    End;
End.

var     t,j,n,a,b:byte;
begin
        readln(t);
        for j:=1 to t do begin
                readln(n);
                if (n mod 2 = 1) and (100 mod n <>0) then writeln(100)
                else begin
                        t:=1;
                        a:=100;
                        b:=n;
                        while t<>0 do begin
                                t:=a mod b;
                                a:=b;
                                b:=t;
                        end;
                        writeln(100 div a);

                end;
        end;
end.

var     t,j,n:byte;
begin
        readln(t);
        for j:=1 to t do begin
                readln(n);
                if 100 mod n = 0 then writeln(100 div n)
                else writeln(100);
        end;
end.

var a:array[1..100] of byte;i,j,t,n:integer;
begin
  readln(t);
  for i:=1 to t do readln(a[i]);
  for i:=1 to t do
    if 100 mod a[i]<>0 then writeln('100')
    else writeln(100 div a[i]);
  readln;
end.

var count,k,t:LongInt;

procedure nhapfile;
var i,j:longint;
begin
  readln(t);
  while t<>0 do
  begin
    readln(k);
    if 100 mod k<>0 then writeln('100') else writeln(100 div k);
    dec(t);
  end;
end;

begin
  nhapfile;
end.

var n,i,ot:int64;
a:array[1..100] of int64;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do
 begin
 if ((100 mod a[i])=0)then writeln(100 div a[i])
  else if ((100 mod(100-a[i]))=0)then writeln (100 div(100-a[i]))
     else if (a[i]mod 10 =0)then writeln ('10')
        else writeln('100');
 end;
end.