import java.util.ArrayList; class Sequential implements Solver { public void solve(Sieve sieve) { sieve.generatePrimes(); } public long[] factor(Sieve sieve, long num) { if (num < sieve.maxNum && sieve.isPrime((int)num)) return new long[] { num }; int sqrt = (int)Math.sqrt(num); ArrayList arr = new ArrayList<>(); while (true) { long prime; for (prime = 2; prime <= sqrt; ++prime) { if (num % prime == 0) { arr.add(new Long(prime)); num /= prime; break; } } if (prime > sqrt) { arr.add(new Long(num)); break; } if (num <= sqrt && sieve.isPrime((int)num)) { if (num != 1) arr.add(new Long(num)); break; } } long[] a = new long[arr.size()]; for (int i = 0; i < a.length; ++i) { a[i] = arr.get(i); } return a; } }