I think your problem is the statement
map1[PMerge] = l;
. If map1[PMerge] already has a value, it replaces that value with your new list l. You can't use the subscript notation for this problem. You have to use map::find() and map::insert().
find() returns an iterator to a map element, which is a pair<int, list>, or it returns end(). If the iterator == end(), you need to add a pair<int, list> to the map. If the iterator != end(), it already points to a pair<int, list>. You need to push a tuple onto the existing list, given by foundit->second.
auto foundit = map1.find(PMerge);
if (foundit == map1.end())
{
map1.insert(make_pair(PMerge, l));
}
else
{
foundit->second.push_back(make_tuple(seed, Dseed));
}