anchor.diff:    integer, intent(out) :: N_tmicrolist(0:mo_tot_num*2), ptr_tmicrolist(0:mo_tot_num*2+1), idx_tmicrolist(N_minilist*4)
     integer(bit_kind), intent(out) :: tmicrolist(Nint,2,N_minilist*4)
     
  -  integer :: i,j,k,s,nt,n_element(2)
  -  integer :: list(Nint*bit_kind_size,2), cur_microlist(0:mo_tot_num*2+1), cur_tmicrolist(0:mo_tot_num*2+1)
  +  integer :: i,j,k,s,nt,n_element(2,N_minilist), idx(0:N_minilist)
  +  integer :: list(4,2,N_minilist), cur_microlist(0:mo_tot_num*2+1), cur_tmicrolist(0:mo_tot_num*2+1)
     integer(bit_kind) :: key_mask_neg(Nint,2), mobileMask(Nint,2)
     integer :: mo_tot_num_2
     mo_tot_num_2 = mo_tot_num+mo_tot_num
   
  -  
  +  idx(0) = 0
     do i=1,Nint
       key_mask_neg(i,1) = not(key_mask(i,1))
       key_mask_neg(i,2) = not(key_mask(i,2))
  
positive.code:         ptr_tmicrolist = 1
          return  
        else
          N_microlist(0) = N_microlist(0) + 1
        endif
      else
        call bitstring_to_list(mobileMask(1,1), list(1,1), n_element(1), Nint)
        call bitstring_to_list(mobileMask(1,2), list(1,2), n_element(2), Nint)
        
        do s=1,2
          do j=1,n_element(s)
            k = list(j,s) + mo_tot_num * (s-1)
            if(nt == 4) N_microlist(k) = N_microlist(k) + 1
            if(nt == 3) N_tmicrolist(k) = N_tmicrolist(k) + 1
          end do
  
negative.code:   end do
    
    
    do i=1, idx(0)
      if(n_element(1, i) + n_element(2, i) > 4) stop "wired"
      if(n_element(1, i) + n_element(2, i) < 3) then
        idx_microlist(cur_microlist(0)) = idx(i)
        do k=1,Nint
          microlist(k,1,cur_microlist(0)) = minilist(k,1,idx(i))
          microlist(k,2,cur_microlist(0)) = minilist(k,2,idx(i))
        enddo
        cur_microlist(0) = cur_microlist(0) + 1
      else
        do s = 1, 2
          do j=1,n_element(s,i)
            nt = list(j,s,i) + mo_tot_num * (s-1)
            
            if(n_element(1,i) + n_element(2,i) == 4) then
              idx_microlist(cur_microlist(nt)) = idx(i)
              do k=1,Nint
                microlist(k,1,cur_microlist(nt)) = minilist(k,1,idx(i))
                microlist(k,2,cur_microlist(nt)) = minilist(k,2,idx(i))
              enddo
              cur_microlist(nt) = cur_microlist(nt) + 1
            else
              idx_tmicrolist(cur_tmicrolist(nt)) = idx(i)
              do k=1,Nint
                tmicrolist(k,1,cur_tmicrolist(nt)) = minilist(k,1,idx(i))
                tmicrolist(k,2,cur_tmicrolist(nt)) = minilist(k,2,idx(i))
              enddo
              cur_tmicrolist(nt) = cur_tmicrolist(nt) + 1
            endif
  