← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	fmt.Fscan(reader, &t)
	for i := 0; i < t; i++ {
		var a, b, n, m int64
		fmt.Fscan(reader, &a, &b)
		fmt.Fscan(reader, &n, &m)

		ans := n * b

		x1 := n - n/(m+1)
		cost1 := x1 * a
		if cost1 < ans {
			ans = cost1
		}

		if m*a < (m+1)*b {
			k := (n - 1) / (m + 1)
			rem := n - k*(m+1)
			cost2 := k*m*a + rem*b
			if cost2 < ans {
				ans = cost2
			}
		}

		fmt.Fprintln(writer, ans)
	}
}
```