function Out = move6_reduction(W_init,H,T,K,G)
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here

aliveK=zeros(K,2);
c=1;
for k=1:K
   for g=H-T:G % tiene conto della sliding window
      if tauexist(W_init,g,k) && ~isempty(W_init.track(g).tau(k).islast) && W_init.track(g).tau(k).frame~=1 % se la track esiste attualmente e ci troviamo nell'ultimo instante, sempre che la track non sia lunga 1
         aliveK(c,:)=[k  W_init.track(g).tau(k).frame];
         c=c+1;
         break;
      end         
   end
end

if c==1 % tutte le track sono morte
   Out=666;
   return
end
a=randi(c-1);
k2red=aliveK(a,1);
Nf2kred=aliveK(a,2);

if Nf2kred==2 
   r=2; % r u.a.r. between (2,Nf2kred-1) %%%%%%%%%%%%% IMAX must be greater than or equal to 1
else
   r=randi(Nf2kred-2)+1; % r u.a.r. between (2,Nf2kred-1) %%%%%%%%%%%%% IMAX must be greater than or equal to 1
end



% si eliminano le associazioni succssive all r-esimo frame
for g=H-T:G % tiene conto della sliding window
   if tauexist(W_init,g,k2red) %%%%%%%%%%%%
      if W_init.track(g).tau(k2red).frame == r
         W_init.track(g).tau(k2red).islast = 1;
      elseif W_init.track(g).tau(k2red).frame > r
         if isfield(W_init.track(g),'tau0') && ~isempty(W_init.track(g).tau0)
      		W_init.track(g).tau0=[W_init.track(g).tau0 W_init.track(g).tau(k2red).y]; % si aggiunge ai falsi allarmi
   		else
      		W_init.track(g).tau0=W_init.track(g).tau(k2red).y;
   		end
         W_init.track(g).tau(k2red).y=[]; % si svuota dalle associazioni
         W_init.track(g).tau(k2red).frame=[]; % si svuota l'indice del mumero dell'associazione
         if ~isempty(W_init.track(g).tau(k2red).islast)
            W_init.track(g).tau(k2red).islast = [];
            W_init.track(g).tau(k2red).AAA='mossa6'; %%%%%%%%%%%%
            break
         end
      end
   end         
end




Out=W_init;


end

