using System.Collections.Generic;
public static void Main() {
var l1 = new List < A > () {
var l2 = new List < A > () {
var c = new List < List < A >> () {
Console.WriteLine("nothing common");
public static class Ext {
public static List < T > FindCommon < T > (this IEnumerable < List < T >> lists) {
var map = new Dictionary < T,
foreach(var list in lists) {
foreach(var item in list) {
if (!map.TryGetValue(item, out currCount)) {
var result = new List < T > ();
foreach(var kvp in map) {
if (kvp.Value == listCount) {