x_values = [1, 2, 3]
y_values = [2, 3, 5]
mean_x = sum(x_values) / len(x_values)
mean_y = sum(y_values) / len(y_values)

numerator = 0
denominator = 0
for x, y in zip(x_values, y_values):
    numerator += (x - mean_x) * (y - mean_y)
    denominator += (x - mean_x) ** 2
slope = numerator / denominator
intercept = mean_y - slope * mean_x
predictions = []
residuals = []
for x, y in zip(x_values, y_values):
    prediction = slope * x + intercept
    predictions.append(prediction)
    residuals.append(y - prediction)
mse = sum(r ** 2 for r in residuals) / len(residuals)
print(round(slope, 4), round(intercept, 4))
print([round(v, 4) for v in predictions])
print([round(v, 4) for v in residuals], round(mse, 4))
