real f(real x) {return x^3-x+2;}
pair F(real x) {return (x,f(x));}
void rectangle(real a, real b, real c, real h(real,real))
{
real height=(a < c && c < b) ? f(c) : h(f(a),f(b));
pair p=(a,0), q=(b,height);
path g=box(p,q);
fill(g,lightgray);
draw(g);
}
void partition(real a, real b, real c, real h(real,real))
{
rectangle(a,a+.4,c,h);
rectangle(a+.4,a+.6,c,h);
rectangle(a+.6,a+1.2,c,h);
rectangle(a+1.2,a+1.6,c,h);
rectangle(a+1.6,a+1.8,c,h);
rectangle(a+1.8,b,c,h);