Map reduce

Map reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduceMap reduce