import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;

public class Barrels {
	public static Long myPow(Long a, Long b) {
		Long base = a;
		for (long i = 1; i < b; i++) {
			a *= base;
		}

		return a;
	}

	public static int count;

	public static Long a, b, c, k;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s;
		int line = 1;
		while ((s = br.readLine()) != null) {
			//System.out.println(s);
			String[] numbers = s.split(" ");
			a = Long.parseLong(numbers[0]);
			b = Long.parseLong(numbers[1]);
			k = Long.parseLong(numbers[2]);
			c = Long.parseLong(numbers[3]);
		}

		ArrayList<Long> numbers = new ArrayList<>();
		numbers.add(a);
		numbers.add(b);

		Long newNumber;
		
		//System.out.println(((myPow(new Long(2), new Long(k)) * k) / 2) % 1000000007);
		int count = 0;
		for (Long i = new Long(0); i < k - 1; i++) {
			ArrayList<Long> oldNumbers = new ArrayList<>(numbers);

			int oldSize = numbers.size();
			for (int j = 0; j < oldSize; j++) {
				newNumber = numbers.get(j) + myPow(new Long(10), i + 1) * a;
				if(c == a) {
					count++;
				}
				numbers.set(j, newNumber);
			}

			for (int j = oldSize; j < oldSize * 2; j++) {
				newNumber = oldNumbers.get(j - oldSize) + myPow(new Long(10), i + 1) * b;
				if(c == b) {
					count++;
				}
				numbers.add(newNumber);
			}
		}
		
		StringBuilder sb = new StringBuilder();
		for (long l : numbers) {
			sb.append(l);
		}
		
	
		System.out.println((sb.toString().length() / 2) % 1000000007);
	}
}

