```go
package main
import (
"bufio"
"fmt"
"os"
)
func isLeap(y int) bool {
return y%400 == 0 || (y%100 != 0 && y%4 == 0)
}
func daysInMonth(y, m int) int {
if m == 2 {
if isLeap(y) {
return 29
}
return 28
}
if m == 4 || m == 6 || m == 9 || m == 11 {
return 30
}
return 31
}
func timeToDate(t int64) (Y, M, D, H, Min, S, W int) {
S = int(t % 60)
Min = int((t / 60) % 60)
H = int((t / 3600) % 24)
days := t / 86400
W = int((days+3)%7) + 1
cycles := days / 146097
Y = 1970 + int(cycles)*400
days %= 146097
for {
dy := 365
if isLeap(Y) {
dy = 366
}
if days >= int64(dy) {
days -= int64(dy)
Y++
} else {
break
}
}
M = 1
for {
dm := daysInMonth(Y, M)
if days >= int64(dm) {
days -= int64(dm)
M++
} else {
break
}
}
D = int(days) + 1
return
}
func dateToTime(Y, M, D, H, Min, S int) int64 {
var days int64 = 0
Y_diff := Y - 1970
cycles := Y_diff / 400
days += int64(cycles) * 146097
currY := 1970 + cycles*400
for currY < Y {
if isLeap(currY) {
days += 366
} else {
days += 365
}
currY++
}
for m := 1; m < M; m++ {
days += int64(daysInMonth(Y, m))
}
days += int64(D - 1)
return days*86400 + int64(H)*3600 + int64(Min)*60 + int64(S)
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var reqSec, reqMin, reqHour, reqDay, reqDate, reqMonth int
if _, err := fmt.Fscan(in, &reqSec, &reqMin, &reqHour, &reqDay, &reqDate, &reqMonth); err != nil {
return
}
var n int
if _, err := fmt.Fscan(in, &n); err != nil {
return
}
for i := 0; i < n; i++ {
var t int64
fmt.Fscan(in, &t)
T := t + 1
for {
Y, M, D, H, Min, S, W := timeToDate(T)
if reqMonth != -1 && M != reqMonth {
if M < reqMonth {
T = dateToTime(Y, reqMonth, 1, 0, 0, 0)
} else {
T = dateToTime(Y+1, reqMonth, 1, 0, 0, 0)
}
continue
}
valid := false
c1 := (reqDate == -1 || D == reqDate)
c2 := (reqDay == -1 || W == reqDay)
if reqDate != -1 && reqDay != -1 {
valid = (D == reqDate || W == reqDay)
} else {
valid = c1 && c2
}
if !valid {
T = T - (T % 86400) + 86400
continue
}
if reqHour != -1 && H != reqHour {
if H < reqHour {
T = T - (T % 86400) + int64(reqHour)*3600
} else {
T = T - (T % 86400) + 86400
}
continue
}
if reqMin != -1 && Min != reqMin {
if Min < reqMin {
T = T - (T % 3600) + int64(reqMin)*60
} else {
T = T - (T % 3600) + 3600
}
continue
}
if reqSec != -1 && S != reqSec {
if S < reqSec {
T = T - (T % 60) + int64(reqSec)
} else {
T = T - (T % 60) + 60
}
continue
}
fmt.Fprintln(out, T)
break
}
}
}
```