import java.io.*; import java.util.*; public class moduic_yuizumi { public static void main(String[] args) throws Exception { Scanner cin = new Scanner(System.in); TestCase testCase; while((testCase = TestCase.scan(cin)) != null) System.out.println(testCase.solve()); } private static class TestCase { private int[] map = new int[10]; private TestCase() { } public static TestCase scan(Scanner cin) { TestCase testCase = new TestCase(); for(int i = 0; i < 10; i++) testCase.map[i] = cin.nextInt(); return (testCase.map[9] < 0) ? null : testCase; } private int sumup(int from, int step) { int n = 0; for(int i = 0; i < 3; i++) n += map[from + i * step]; return n % map[9]; } private int solve(int idx) { if(idx == 10) { int sum = sumup(0, 4); if(sumup(0, 1) != sum) { return 0; } if(sumup(3, 1) != sum) { return 0; } if(sumup(6, 1) != sum) { return 0; } if(sumup(0, 3) != sum) { return 0; } if(sumup(1, 3) != sum) { return 0; } if(sumup(2, 3) != sum) { return 0; } if(sumup(0, 4) != sum) { return 0; } if(sumup(2, 2) != sum) { return 0; } return 1; } int n = 0; if(map[idx] == 0) { for(int i = 1; i <= 10; i++) { boolean found = false; for(int j = 0; j < 10 && !found; j++) found = (map[j] == i); if(!found) { map[idx] = i; n += solve(idx + 1); map[idx] = 0; } } } else { n = solve(idx + 1); } return n; } public int solve() { return solve(0); } } }