CVS buys longs for 2.9B