1class Solution {2public List<Integer> replaceNonCoprimes(int[] nums) {3List<Integer> al = new ArrayList<>();4long n1 = nums[0];5int idx = 1;67while (idx < nums.length) {8if ((int) gcd(n1, nums[idx]) == 1) {9while (al.size() != 0) {10int t = al.get(al.size() - 1);11if (gcd(n1, t) == 1) break;12else {13al.remove(al.size() - 1);14n1 = lcm(t, n1);15}16}1718al.add((int) n1);19n1 = nums[idx];20idx++;21} else {22n1 = lcm(n1, nums[idx]);23idx++;24}25}2627while (al.size() != 0) {28int t = al.get(al.size() - 1);29if (gcd(n1, t) == 1) break;30else {31al.remove(al.size() - 1);32n1 = lcm(t, n1);33}34}35al.add((int) n1);3637return al;38}3940public long gcd(long a, long b) {41if (b == 0) return a;4243return gcd(b, a % b);44}4546public long lcm(long a, long b) {47long hcf = gcd(a, b);48return (a * b) / hcf;49}50}