class
GFG
{
static
int
lcm(
int
a,
int
b)
{
int
GCD = __gcd(a, b);
return
(a * b) / GCD;
}
static
int
MinLCM(
int
a[],
int
n)
{
int
[]Prefix =
new
int
[n +
2
];
int
[]Suffix =
new
int
[n +
2
];
Prefix[
1
] = a[
0
];
for
(
int
i =
2
; i <= n; i +=
1
)
{
Prefix[i] = lcm(Prefix[i -
1
],
a[i -
1
]);
}
Suffix[n] = a[n -
1
];
for
(
int
i = n -
1
; i >=
1
; i -=
1
)
{
Suffix[i] = lcm(Suffix[i +
1
],
a[i -
1
]);
}
int
ans = Math.min(Suffix[
2
],
Prefix[n -
1
]);
for
(
int
i =
2
; i < n; i +=
1
)
{
ans = Math.min(ans, lcm(Prefix[i -
1
],
Suffix[i +
1
]));
}
return
ans;
}
static
int
__gcd(
int
a,
int
b)
{
return
b ==
0
? a : __gcd(b, a % b);
}
public
static
void
main(String []args)
{
int
a[] = {
5
,
15
,
9
,
36
};
int
n = a.length;
System.out.println(MinLCM(a, n));
}
}