#include using namespace std; int a[100006]; inline int fabss(int x) { if ( x < 0 ) return -x; return x; } int main() { freopen ( "metro.in", "r", stdin ); freopen ( "metro.out", "w", stdout ); int result=0,begin,end,expected,up,down; int l,k,n,i; scanf ("%d%d%d",&l,&k,&n); for ( i=1; i<=n; i++ ) { scanf ("%d",&a[i]); a[i] = a[i]<<1; } for ( i=1; i<=n; i++ ) { if ( i == 1 ) begin = 0; else begin = (a[i] + a[i-1]) /2; if ( i == n ) end = l<<1; else end = (a[i] + a[i+1]) /2; expected = fabss((k<<1)-a[i])<<2; up = a[i] - begin; down = end - a[i]; expected += ( up*up + down*down ); result += expected; } printf ("%.6f\n",(float)result/(float)(l*8)); }