#!/usr/bin/env python3

from bisect import bisect

l, a, b, t, r = map(float, input().split())
n = int(input())
boosters = list(map(float, input().split())) + [l]

dp = [(0, 0)] * (n+1)

for i in range(n-1, -1, -1):
    dp[i] = (dp[i+1][0] + (boosters[i+1]-boosters[i]) / a, i+1)
    j = bisect(boosters, boosters[i] + a*t + b*r)
    if j <= n:
        dp[i] = min(dp[i], (dp[j][0] + t + r + (boosters[j]-boosters[i]-a*t-b*r)/a, j))
    if j-1 > i and boosters[j-1] - boosters[i] > a*t:
        dp[i] = min(dp[i], (dp[j-1][0] + t + (boosters[j-1]-boosters[i]-a*t)/b, j-1))

sol = []
at = 0
while at < n:
    sol.append(at)
    at = dp[at][1]

print(len(sol))
print(' '.join(map(str, sol)))
