module OW_gcd

implicit none

contains

 subroutine owgcd(n,iq,q,indq)

 integer			:: n,k,i,m,j,iq,q(:)
 integer			:: q1(500),indq(1)

 k=2**n-1
 iq=0;q1=0;

 do i=1,k
    m=n;j=i
    do while (j .ne. m)
       if (j .gt. m) then
          j=j-m
       else
          m=m-j
       end if
    end do
    if ((j.eq.1).or.(m.eq.1)) then
       iq=iq+1
       q1(iq) = i
    end if
 end do

 q1=2**q1
 
 indq=maxloc(q1) ! ,mask=abs(q1) > huge(1))

 do i=1,indq(1)
    q(i)=q1(i)+1
 end do

 end subroutine

end module
