initial
final solution