// Arup Guha
// 5/17/2012
// Solution to 2012 World Finals Problem B: Curvy Little Bottles

import java.util.*;

public class b {
		
	public static void main(String[] args) {
		
		Scanner stdin = new Scanner(System.in);
		int loop = 1;
		
		// Get all cases.
		while (stdin.hasNext()) {
			
			int degree = stdin.nextInt();
			
			// Read in poly.
			double[] poly = new double[degree+1];
			for (int i=0; i<=degree; i++)
				poly[i] = stdin.nextDouble();
				
			double[] polysq = new double[2*degree+1];
			for (int i=0; i<polysq.length; i++)
				polysq[i] = 0;
				
			// Slow way to multiply polys will suffice.
			for (int i=0; i<poly.length; i++)
				for (int j=0; j<poly.length; j++)
					polysq[i+j] = polysq[i+j] + poly[i]*poly[j];
					
			// Integrate.
			double[] integral = new double[2*degree+2];
			integral[0] = 0;
			for (int i=0; i<polysq.length; i++)
				integral[i+1] = polysq[i]/(i+1);
				
			double low = stdin.nextDouble();
			double high = stdin.nextDouble();
			double inc = stdin.nextDouble();
			
			double total = volume(integral, low, high);
			
			System.out.printf("Case %d: %.2f\n", loop, total);
			if (total < inc) {
				System.out.printf("insufficient volume\n");
			}
			else {
				
				int nummarks = (int)(total/inc);
				
				// Their silly rule.
				if (nummarks > 8)
					nummarks = 8;
					
				// Go through and print these marks.
				double newx = low;
				for (int i=0; i<nummarks; i++) {
					double target = (i+1)*inc;
					newx = search(integral, target, low, newx, high);
					System.out.printf("%.2f ", newx-low);
				}
				System.out.printf("\n");
			}
			loop++;
		}
	}
	
	// Binary Search of integral poly. Goal is to find xval such that the integral from low_int to xval equals target.
	// the bounds of the search are low_search to high_search.
	public static double search(double[] poly, double target, double low_int, double low_search, double high_search) {
		
		double mid = (low_search + high_search)/2;
		while (high_search - low_search > 1e-4) {
			
			mid = (low_search + high_search)/2;
			double val = volume(poly, low_int, mid);
			
			if (val < target)
				low_search = mid;
			else if (val > target)
				high_search = mid;
			else
				return mid;
		}
		return mid;
	}
	
	// Doesn't use Horner's. Should work just fine this way.
	public static double eval(double[] poly, double x) {
		
		double ans = 0;
		for (int i=0; i<poly.length; i++)
			ans = ans + poly[i]*Math.pow(x, i);
			
		return ans;
	}
	
	public static double volume(double[] poly, double low, double high) {
		return Math.PI*(eval(poly, high) - eval(poly, low));
	}
}