import
java.util.*;
class
GFG{
static
int
minFirstTerm(
int
X,
int
diff,
int
N)
{
int
first_term = Integer.MAX_VALUE;
int
low =
0
, high = N;
while
(low <= high)
{
int
mid = (low + high) /
2
;
if
(X - mid * diff >
0
)
{
first_term = X - mid * diff;
low = mid +
1
;
}
else
high = mid -
1
;
}
return
first_term;
}
static
void
printAP(
int
N,
int
X,
int
Y)
{
if
(X > Y)
{
X = X + Y;
Y = X - Y;
X = X - Y;
}
int
maxDiff = Y - X;
int
first_term = Integer.MAX_VALUE, diff =
0
;
for
(
int
i =
1
; i * i <= maxDiff; i++)
{
if
(maxDiff % i ==
0
)
{
int
diff1 = i;
int
diff2 = maxDiff / diff1;
int
terms1 = diff2 +
1
;
int
terms2 = diff1 +
1
;
int
first_term1 = minFirstTerm(X, diff1,
N - terms1);
int
first_term2 = minFirstTerm(X, diff2,
N - terms2);
if
(first_term1 < first_term)
{
first_term = first_term1;
diff = diff1;
}
if
(first_term2 < first_term)
{
first_term = first_term2;
diff = diff2;
}
}
}
for
(
int
i =
0
; i < N; i++)
{
System.out.print(first_term +
" "
);
first_term += diff;
}
}
public
static
void
main(String[] args)
{
int
N =
5
, X =
10
, Y =
15
;
printAP(N, X, Y);
}
}