Full solution