// Path: src/main/java/com/hackerrank/NonDivisibleSubset.java
// static int findMaxSubset(int[] a, int k) {
//     List<Integer> subset = new ArrayList<>();
//     for (int i = 0; i < a.length; i++) {
//         if (a[i] % k != 0) {
//             subset.add(a[i]);
//         }
//         if (subset.size() > 0 && divisible(subset, k)) {
//             List<Integer> alter = new ArrayList<>();
//             alter.addAll(subset);
//             alter.remove(i - 1);
// 
//             if (!divisible(alter, k)) {
//                 subset = alter;
//             } else {
//                 subset.remove((Integer) a[i]);
//             }
//         }
// 
//     }
//     return subset.size();
// }


import org.junit.Test;
import static com.hackerrank.NonDivisibleSubset.findMaxSubset;
import static org.junit.Assert.assertEquals;
package com.hackerrank;



public class NonDivisibleSubsetTest {

    @Test
    public void maxSubset() throws Exception {
// Path: src/main/java/com/hackerrank/NonDivisibleSubset.java
// static int findMaxSubset(int[] a, int k) {
//     List<Integer> subset = new ArrayList<>();
//     for (int i = 0; i < a.length; i++) {
//         if (a[i] % k != 0) {
//             subset.add(a[i]);
//         }
//         if (subset.size() > 0 && divisible(subset, k)) {
//             List<Integer> alter = new ArrayList<>();
//             alter.addAll(subset);
//             alter.remove(i - 1);
// 
//             if (!divisible(alter, k)) {
//                 subset = alter;
//             } else {
//                 subset.remove((Integer) a[i]);
//             }
//         }
// 
//     }
//     return subset.size();
// }


// Path: src/test/java/com/hackerrank/NonDivisibleSubsetTest.java
import org.junit.Test;
import static com.hackerrank.NonDivisibleSubset.findMaxSubset;
import static org.junit.Assert.assertEquals;

package com.hackerrank;



public class NonDivisibleSubsetTest {

    @Test
    public void maxSubset() throws Exception {
        assertEquals(findMaxSubset(new int[]{1, 7, 2, 4}, 3), 3);