program main implicit none character*12::S integer::i,lenk integer*8,allocatable::N(:) read *,S lenk = LEN_TRIM(S) if(lenk.lt.3) then print '("0")' return end if allocate(N(lenk)) do i=1,lenk N(i) = ICHAR(S(i:i))-ICHAR('0') end do print '(i0)', partmax(N) contains recursive function partmax(N) result(pmax) integer*8,intent(in) ::N(:) integer*8,allocatable::M(:) integer*8::cww,pmax,i,j,k,l,len,ni100 pmax = 0 len = size(N) if(len .gt. 5) then do i=1,len-2 if(N(i).ne.0) then ni100=N(i)*100 do j=i+1,len-1 if(N(i).ne.N(j))then cww = ni100+N(j)*11 do k=j+1, len if(N(j).eq.N(k)) then M = pack(N, (/(l.ne.i.and.l.ne.j.and.l.ne.k,l=1,len)/)) pmax = MAX(cww+partmax(M),pmax) end if end do end if end do end if end do else do i=1,len-2 if(N(i).ne.0) then ni100=N(i)*100 do j=i+1,len-1 if(N(i).ne.N(j))then cww = ni100+N(j)*11 do k=j+1, len if(N(j).eq.N(k)) then cww = N(i)*100+N(j)*11 pmax = MAX(cww,pmax) end if end do end if end do end if end do endif end function partmax end program main