program yukicoder_2601 use, intrinsic :: iso_fortran_env implicit none integer(int32) :: n, x integer(int64) :: ans integer(int64), allocatable :: arr(:), cumm_summ(:) integer(int32) :: i, j read(input_unit, *) n, x allocate(arr(n)) read(input_unit, *) arr(:) allocate(cumm_summ(0 : 2 * n)) cumm_summ(0) = 0_int64 do i = 1, 2 * n cumm_summ(i) = cumm_summ(i - 1) + arr(mod(i - 1, n) + 1) end do ans = 0 j = 0 do i = 1, 2 * n j = max(j, i - 1) do if (j + 1 > 2 * n) exit if (j + 1 - i + 1 > n) exit if (cumm_summ(j + 1) - cumm_summ(i - 1) > x) exit j = j + 1 end do ! write(error_unit, *) j, i - 1 ans = max(ans, cumm_summ(j) - cumm_summ(i - 1)) end do write(output_unit, '(i0)') ans end program yukicoder_2601