{"cells":[{"cell_type":"markdown","metadata":{"id":"VKuaeT-2F6H9"},"source":["## Reasoning Scaling Law Example Code for Training a Small Model"]},{"cell_type":"code","execution_count":1,"metadata":{"id":"dEUhaFfkF6H_","executionInfo":{"status":"ok","timestamp":1751815271572,"user_tz":-480,"elapsed":36238,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"outputs":[],"source":["### import relevant packages\n","\n","import networkx as nx\n","import numpy as np\n","import random\n","from collections import defaultdict\n","import os, json\n","import copy\n","import torch\n","import transformers\n","import matplotlib.pyplot as plt\n","import itertools\n","from transformers import Trainer, TrainingArguments\n","from torch.utils.data import IterableDataset, get_worker_info, Dataset\n","from typing import Dict, Optional, Sequence\n","from sklearn.utils import shuffle\n","from dataclasses import dataclass\n","import torch.nn.functional as F\n","from torch.nn import CrossEntropyLoss\n","from transformers import LlamaForCausalLM\n","from transformers.modeling_outputs import CausalLMOutputWithPast\n","from transformers.cache_utils import Cache\n","from typing import List, Optional, Tuple, Union"]},{"cell_type":"markdown","source":["Helper founctions:"],"metadata":{"id":"gA1eQp9T731U"}},{"cell_type":"code","source":["def set_seed(seed):\n","    torch.manual_seed(seed)\n","    torch.cuda.manual_seed(seed)\n","    torch.cuda.manual_seed_all(seed)\n","    np.random.seed(seed)\n","    random.seed(seed)\n","    torch.manual_seed(seed)\n","\n","def add_edge(G, h, t, r):\n","    num_edges = 0\n","    if G.has_edge(h, t):\n","        if r not in G[h][t]['id']:\n","            G[h][t]['id'].append(r)\n","            num_edges += 1\n","        else:\n","            print('edge already exists')\n","    else:\n","        G.add_edge(h, t, id=[r])\n","        num_edges += 1\n","    print('add edge: ', (h, r, t), 'num edges: ', num_edges)\n","    return num_edges\n","\n","\n","def generate_rules(relations, num_rules, L_min, L_max, weighted=False, temperature=0.25):\n","    # Generate K acyclic logic rules with varying lengths\n","    dependency_graph = defaultdict(set)\n","    rules = []\n","    weights = []\n","    if weighted:\n","        for l in range(L_min, L_max + 1):\n","            weights.append(np.exp(-temperature*l))\n","        probs = np.array([w / sum(weights) for w in weights])\n","    else:\n","        weights = [1] * (L_max - L_min + 1)\n","\n","    def has_cycle(start, visited, stack):\n","        \"\"\"Detects if adding a new dependency introduces a cycle.\"\"\"\n","        if start not in visited:\n","            visited.add(start)\n","            stack.add(start)\n","            print('visited: ', visited)\n","            print('stack: ', stack)\n","            for neighbor in dependency_graph[start]:\n","                if neighbor in stack:\n","                    return True\n","                elif has_cycle(neighbor, visited, stack):\n","                    return True\n","        if start in stack:\n","            stack.remove(start)\n","        return False\n","\n","    for _ in range(num_rules):\n","        while True:\n","            if weighted:\n","                length = random.choices(range(L_min, L_max + 1), weights=weights)[0]\n","            else:\n","                length = random.randint(L_min, L_max)\n","            rule_relations = random.choices(relations, k = length + 1) # the first element is the implied relation\n","            valid_rule = True\n","            for i in range(1, len(rule_relations)):\n","                dependency_graph[rule_relations[0]].add(rule_relations[i])\n","\n","                # Check for cycles\n","                if has_cycle(rule_relations[i], set(), set()):\n","                    valid_rule = False\n","                    for j in range(1, i + 1):\n","                        dependency_graph[rule_relations[0]].remove(rule_relations[j])\n","                    break\n","\n","            if valid_rule:\n","                rules.append(tuple(rule_relations))\n","                break\n","\n","    print('rules: ', rules)\n","    return rules\n","\n","def get_node_types(rules, max_num_relations_per_node=3):\n","    # map node types to out relations\n","    node_types = {}\n","    # map out relations to node types\n","    r2node_types = defaultdict(list)\n","    for rule in rules:\n","        for i in range(len(rule)):\n","            node_type = len(node_types)\n","            if i == 0:\n","                node_types[node_type] = [rule[i], rule[1]]\n","                r2node_types[rule[i]].append(node_type)\n","                r2node_types[rule[1]].append(node_type)\n","            elif i == len(rule) - 1:\n","                node_types[node_type] = ['-' + rule[i], '-' + rule[0]]\n","                r2node_types['-' + rule[i]].append(node_type)\n","                r2node_types['-' + rule[0]].append(node_type)\n","            else:\n","                node_types[node_type] = ['-' + rule[i], rule[i+1]]\n","                r2node_types['-' + rule[i]].append(node_type)\n","                r2node_types[rule[i+1]].append(node_type)\n","\n","    print(node_types)\n","    print(r2node_types)\n","\n","    for num_rs in range(2, max_num_relations_per_node):\n","        possible_new_node_types = []\n","        for r in r2node_types:\n","            alt_rs = []\n","            for node_type in r2node_types[r]:\n","                for _r in node_types[node_type]:\n","                    if _r != r:\n","                        alt_rs.append(_r)\n","            alt_rs = list(set(alt_rs))\n","            for node_type in r2node_types[r]:\n","                if len(node_types[node_type]) == num_rs:\n","                    for _r in alt_rs:\n","                        if _r not in node_types[node_type]:\n","                            possible_new_node_types.append(tuple(sorted([_r] + list(node_types[node_type]))))\n","            print(possible_new_node_types)\n","            possible_new_node_types += list(set(possible_new_node_types))\n","        possible_new_node_types = list(set(possible_new_node_types))\n","        print(possible_new_node_types)\n","\n","        for rs in possible_new_node_types:\n","            new_node_type = len(node_types)\n","            node_types[new_node_type] = list(rs)\n","            for _r in rs:\n","                r2node_types[_r].append(new_node_type)\n","\n","    return node_types\n","\n","def get_adj_out_relations(rules):\n","    adj = defaultdict(list)\n","    for rule in rules:\n","        for i in range(len(rule)):\n","            if i == 0:\n","                adj[rule[i]].append(rule[1])\n","                adj[rule[1]].append(rule[i])\n","            elif i == len(rule) - 1:\n","                adj['-' + rule[i]].append('-' + rule[0])\n","                adj['-' + rule[0]].append('-' + rule[i])\n","            else:\n","                adj['-' + rule[i]].append(rule[i+1])\n","                adj[rule[i+1]].append('-' + rule[i])\n","    return adj"],"metadata":{"id":"MtrdtzEUHtgs","executionInfo":{"status":"ok","timestamp":1751815271602,"user_tz":-480,"elapsed":32,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"execution_count":2,"outputs":[]},{"cell_type":"markdown","source":["Synthetic graph generation:"],"metadata":{"id":"E-JuCbm_774w"}},{"cell_type":"code","source":["def latent_rule_graph(num_rules=50, L_min=2, L_max=4, n=10000, m=10, n_r=200,\n","                      num_test=1000, num_train=150000, check_frequency=100,\n","                      power_law=False, initial_graph=None,\n","                      length_weighted=False, mcmc=0.2, temperature=0.25,\n","                      deductible_ratio=0.5):\n","\n","    relations = ['P' + str(i) for i in range(n_r)]\n","    all_rules = generate_rules(relations, max(n_r//L_min, num_rules), L_min, L_max)\n","    r2rules = {}\n","    for rule in all_rules:\n","        if rule[0] not in r2rules:\n","            r2rules[rule[0]] = []\n","        r2rules[rule[0]].append(rule[1:])\n","    num_triples = 0\n","    repeated_entities = defaultdict(list) # map in relation to entities\n","    child_relations = []\n","    for rule in all_rules:\n","        child_relations += rule[1:]\n","    child_relations = list(set(child_relations))\n","    child_relations += ['-' + r for r in child_relations]\n","    deductible_rules = random.sample(all_rules, num_rules)\n","    if length_weighted:\n","        weights = [int(100*np.exp(-temperature*len(rule))) for rule in all_rules]\n","    else:\n","        weights = [1 for _ in all_rules]\n","    repeated_rules = []\n","    for rule, weight in zip(all_rules, weights):\n","        for _ in range(weight):\n","            repeated_rules.append(rule)\n","    random.shuffle(repeated_rules)\n","    adj = get_adj_out_relations(repeated_rules)\n","    all_deductibles = {}\n","\n","    if initial_graph is None:\n","        # Default initial graph\n","        G = nx.DiGraph()\n","        node_id = 0\n","        min_repeated_entities = 0\n","        while min_repeated_entities < m:\n","            for rule in all_rules:\n","                source = 'Q' + str(node_id)\n","                node_id += 1\n","                h = source\n","                for r in rule[1:]:\n","                    t = 'Q' + str(node_id)\n","                    node_id += 1\n","                    num_triples += add_edge(G, h, t, r)\n","                    repeated_entities[r].append(t)\n","                    repeated_entities['-' + r].append(h)\n","                    h = t\n","                num_triples += add_edge(G, source, t, rule[0])\n","                repeated_entities[rule[0]].append(t)\n","                repeated_entities['-' + rule[0]].append(source)\n","\n","            min_repeated_entities = min([len(set(repeated_entities[r])) for r in child_relations])\n","    else:\n","        if len(initial_graph) < m or len(initial_graph) > n:\n","            raise nx.NetworkXError(\n","                f\"Initial graph needs between m={m} and n={n} nodes\"\n","            )\n","        G = initial_graph.copy()\n","        node_id = len(G)\n","\n","    if not power_law:\n","        repeated_entities = {r: list(set(repeated_entities[r])) for r in repeated_entities}\n","\n","    # adding nodes\n","    while node_id < n:\n","        source = 'Q' + str(node_id)\n","        node_id += 1\n","        possible_relations = [_r for _r in adj if _r in child_relations]\n","        if len(possible_relations) == 0:\n","            print('no adj relations')\n","            break\n","        print('add child edge')\n","        chosen_edges = []\n","        stop = False\n","        for _ in range(m):\n","            it = 0\n","            while (r, t) in chosen_edges:\n","                r = random.choice(possible_relations)\n","                t = random.choice(repeated_entities[r])\n","                it += 1\n","                if it > 100:\n","                    print('failed to find edge')\n","                    stop = True\n","                    break\n","            if stop or len(possible_relations) == 0:\n","                break\n","\n","            possible_relations = [_r for _r in adj[r] if _r in child_relations]\n","            chosen_edges.append((r, t))\n","            if r[0] == '-':\n","                num_triples += add_edge(G, t, source, r[1:])\n","                repeated_entities[r[1:]].append(source)\n","            else:\n","                num_triples += add_edge(G, source, t, r)\n","                repeated_entities['-' + r].append(source)\n","            repeated_entities[r].append(t)\n","            if len(possible_relations) == 0:\n","                print('no adj relations')\n","                break\n","\n","        if not power_law:\n","            repeated_entities = {r: list(set(repeated_entities[r])) for r in repeated_entities}\n","\n","        if node_id % check_frequency == 0 or node_id == n-1:\n","            # add deductibles\n","            all_nodes = list(G.nodes)\n","            random.shuffle(all_nodes)\n","            for h in all_nodes:\n","                for rule in deductible_rules:\n","                    head_list = [h]\n","                    r = rule[0]\n","\n","                    for _r in rule[1:]:\n","                        next_head_list = []\n","                        for e_h in head_list:\n","                            if e_h not in G.nodes:\n","                                continue\n","                            for e_t in G[e_h]:\n","                                if _r in G[e_h][e_t]['id']:\n","                                    if random.random() < mcmc:\n","                                        next_head_list.append(e_t)\n","                        head_list = next_head_list\n","\n","                    for t in head_list:\n","                        if (h, r, t) not in all_deductibles:\n","                            all_deductibles[(h, r, t)] = [rule]\n","                        elif rule not in all_deductibles[(h, r, t)]:\n","                            all_deductibles[(h, r, t)].append(rule)\n","                        if not G.has_edge(h, t) or r not in G[h][t]['id']:\n","                            print('add deductible edge')\n","                            add_edge(G, h, t, r)\n","                            num_triples += 1\n","                            repeated_entities[r].append(t)\n","                            repeated_entities['-' + r].append(h)\n","\n","    atomic_triples = []\n","    deductible_triples = []\n","    for h, t in G.edges:\n","        for r in G[h][t]['id']:\n","            if (h, r, t) not in all_deductibles:\n","                atomic_triples.append((h, r, t))\n","            else:\n","                deductible_triples.append((h, r, t))\n","    random.shuffle(atomic_triples)\n","    random.shuffle(deductible_triples)\n","    assert len(atomic_triples) >= int(num_train * (1-deductible_ratio))\n","    assert len(deductible_triples) >= int(num_train * deductible_ratio) + 2 * num_test\n","\n","    remove_triples = []\n","    train_atomic_triples = atomic_triples[:int(num_train * (1-deductible_ratio))]\n","    remove_triples += atomic_triples[int(num_train * (1-deductible_ratio)):]\n","    train_deductible_triples = deductible_triples[:int(num_train * deductible_ratio)]\n","    remove_triples += deductible_triples[int(num_train * deductible_ratio):]\n","\n","    for h, r, t in remove_triples:\n","        _t = t\n","        rs = G[h][_t]['id']\n","        if r in rs:\n","            if len(rs) == 1:\n","                G.remove_edge(h, _t)\n","            else:\n","                G[h][_t]['id'].remove(r)\n","\n","    train_triples = train_deductible_triples + train_atomic_triples\n","    random.shuffle(train_triples)\n","    print(\"num train triples: \", len(train_triples))\n","\n","    r2rule = {}\n","    for rule in deductible_rules:\n","        if rule[0] in r2rule:\n","            r2rule[rule[0]].append(rule[1:])\n","        else:\n","            r2rule[rule[0]] = [rule[1:]]\n","\n","    def check_deductible(triple):\n","        h, r, t = triple\n","        alt_ts = []\n","        for rule in r2rule[r]:\n","            head_list = [h]\n","            for _r in rule:\n","                next_head_list = []\n","                for e_h in head_list:\n","                    for e_t in G[e_h]:\n","                        if _r in G[e_h][e_t]['id']:\n","                            next_head_list.append(e_t)\n","                head_list = next_head_list\n","            alt_ts += head_list\n","        if t in alt_ts:\n","            return True\n","        return False\n","\n","    id_test_triples = []\n","    for i in range(int(num_train * deductible_ratio), len(deductible_triples)):\n","        if check_deductible(deductible_triples[i]):\n","            id_test_triples.append(deductible_triples[i])\n","        if len(id_test_triples) == num_test:\n","            break\n","\n","    id_test_rules = [all_deductibles[triple] for triple in id_test_triples]\n","    print(\"num id test triples: \", len(id_test_triples))\n","\n","    rule2triples = defaultdict(list)\n","    for triple in deductible_triples[i+1:]:\n","        for rule in all_deductibles[triple]:\n","            rule2triples[rule].append(triple)\n","\n","    # uniformly sample testing triples from each rule\n","    uniform_test_triples = []\n","    for rule in rule2triples:\n","        triples = []\n","        for triple in rule2triples[rule]:\n","            if check_deductible(triple):\n","                triples.append(triple)\n","\n","        if len(triples) > num_test//len(rule2triples):\n","            uniform_test_triples += random.sample(triples, num_test//len(rule2triples))\n","        else:\n","            uniform_test_triples += triples\n","\n","    random.shuffle(uniform_test_triples)\n","    uniform_test_rules = [all_deductibles[triple] for triple in uniform_test_triples]\n","    print(\"num uniform test triples: \", len(uniform_test_triples))\n","\n","    return G, deductible_rules, train_triples, id_test_triples, id_test_rules, uniform_test_triples, uniform_test_rules"],"metadata":{"id":"58tty8NWf4D0","executionInfo":{"status":"ok","timestamp":1751815271726,"user_tz":-480,"elapsed":114,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"execution_count":3,"outputs":[]},{"cell_type":"markdown","source":["Data class for synthetic graph:"],"metadata":{"id":"SxUZzyra8m7k"}},{"cell_type":"code","source":["class LatentRuleGraph:\n","    def __init__(self,\n","                 n=1000, n_r=40, m=5, n_rules=30, n_triples=10000,\n","                 num_test=1000, L_min=2, L_max=4, power_law=False,\n","                 length_weighted=False, mcmc=1.0,\n","                 temperature=0.25, deductible_ratio=0.5, seed=42):\n","        self.n = n\n","        self.n_r = n_r\n","        self.n_triples = n_triples\n","        self.n_rules = n_rules\n","        self.num_test = num_test\n","        self.L_min = L_min\n","        self.L_max = L_max\n","        self.power_law = power_law\n","        self.m = m\n","        self.length_weighted = length_weighted\n","        self.mcmc = mcmc\n","        self.temperature = temperature\n","        self.deductible_ratio = deductible_ratio\n","        self.seed = seed\n","        random.seed(seed)\n","        self.G = nx.DiGraph()\n","        self.load_data()\n","        self.all_es = list(self.G.nodes)\n","        self.all_rs = set()\n","        for h, t, r_dict in self.G.edges(data=True):\n","            for r in r_dict['id']:\n","                self.all_rs.add(r)\n","        self.triple_complet_file = None\n","\n","    def load_data(self):\n","        self.triples = []\n","        self.id_test_triples = []\n","        self.uniform_test_triples = []\n","        self.id_alt_ts = []\n","        self.uniform_alt_ts = []\n","        self.rules = []\n","        self.id_test_rules = []\n","        self.uniform_test_rules = []\n","\n","\n","        self.G, self.rules, self.triples, \\\n","        self.id_test_triples, self.id_test_rules, \\\n","        self.uniform_test_triples, self.uniform_test_rules = latent_rule_graph(\n","            num_rules=self.n_rules, L_min=self.L_min, L_max=self.L_max,\n","            n=self.n, n_r=self.n_r, m=self.m,\n","            num_test=self.num_test, num_train=self.n_triples,\n","            power_law=self.power_law,\n","            length_weighted=self.length_weighted, mcmc=self.mcmc,\n","            deductible_ratio=self.deductible_ratio, temperature=self.temperature)\n","\n","        r2rule = {}\n","        for rule in self.rules:\n","            if rule[0] in r2rule:\n","                r2rule[rule[0]].append(rule[1:])\n","            else:\n","                r2rule[rule[0]] = [rule[1:]]\n","\n","        def get_alt_ts(h, r, t):\n","            alt_ts = []\n","            for rule in r2rule[r]:\n","                head_list = [h]\n","                for _r in rule:\n","                    next_head_list = []\n","                    for e_h in head_list:\n","                        for e_t in self.G[e_h]:\n","                            if _r in self.G[e_h][e_t]['id']:\n","                                next_head_list.append(e_t)\n","                    head_list = next_head_list\n","                alt_ts += head_list\n","            return alt_ts\n","\n","        for h, r, t in self.id_test_triples:\n","            alt_ts = get_alt_ts(h, r, t)\n","            self.id_alt_ts.append(alt_ts)\n","\n","        for h, r, t in self.uniform_test_triples:\n","            alt_ts = get_alt_ts(h, r, t)\n","            self.uniform_alt_ts.append(alt_ts)\n","\n","        self.mem_triples = random.sample(self.triples, k=self.num_test)"],"metadata":{"id":"z-tRvGo6SJbY","executionInfo":{"status":"ok","timestamp":1751815271754,"user_tz":-480,"elapsed":25,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"execution_count":4,"outputs":[]},{"cell_type":"markdown","source":["Create a new synthetic graph:"],"metadata":{"id":"VwfKAW2q_bF9"}},{"cell_type":"code","source":["graph = LatentRuleGraph(\n","        n=2000,\n","        n_r=50,\n","        n_triples=10000,\n","        n_rules=20,\n","        L_min=2,\n","        L_max=4,\n","        power_law=True,\n","        deductible_ratio=0.5,\n","        length_weighted=False,\n","        m=6,\n","        num_test=1000,\n","        temperature=0.25,\n","        mcmc=1.0)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"u_l4knpm_YIH","executionInfo":{"status":"ok","timestamp":1751815284686,"user_tz":-480,"elapsed":12931,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}},"outputId":"0c9d6138-ea3b-4427-d33d-5f6c86bd5866"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[1;30;43mStreaming output truncated to the last 5000 lines.\u001b[0m\n","add edge:  ('Q1681', 'P38', 'Q1821') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1884') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1885') num edges:  1\n","add deductible edge\n","add edge:  ('Q1304', 'P43', 'Q1812') num edges:  1\n","add deductible edge\n","add edge:  ('Q1304', 'P43', 'Q1819') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P19', 'Q256') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P19', 'Q747') num edges:  1\n","add deductible edge\n","add edge:  ('Q971', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q971', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q971', 'P19', 'Q691') num edges:  1\n","add deductible edge\n","add edge:  ('Q971', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q684', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q684', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q684', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q564', 'P4', 'Q1849') num edges:  1\n","add deductible edge\n","add edge:  ('Q1137', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q728', 'P21', 'Q683') num edges:  1\n","add deductible edge\n","add edge:  ('Q728', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q927', 'P4', 'Q1803') num edges:  1\n","add deductible edge\n","add edge:  ('Q927', 'P4', 'Q1849') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P29', 'Q449') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P29', 'Q700') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P29', 'Q918') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P29', 'Q1302') num edges:  1\n","add deductible edge\n","add edge:  ('Q732', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q985', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q985', 'P18', 'Q50') num edges:  1\n","add deductible edge\n","add edge:  ('Q984', 'P38', 'Q1874') num edges:  1\n","add deductible edge\n","add edge:  ('Q1710', 'P4', 'Q1849') num edges:  1\n","add deductible edge\n","add edge:  ('Q970', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q970', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q970', 'P43', 'Q1812') num edges:  1\n","add deductible edge\n","add edge:  ('Q970', 'P43', 'Q1819') num edges:  1\n","add deductible edge\n","add edge:  ('Q1031', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q633', 'P21', 'Q454') num edges:  1\n","add deductible edge\n","add edge:  ('Q633', 'P21', 'Q1119') num edges:  1\n","add deductible edge\n","add edge:  ('Q633', 'P21', 'Q1214') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q300') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q720') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1049') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q666') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q724') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1022') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1047') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1081') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1737') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1738') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q682') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1085') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1086') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1237') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q759') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q961') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q171') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q607') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1758') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1583') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1294') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1604') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q963', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q672', 'P21', 'Q1812') num edges:  1\n","add deductible edge\n","add edge:  ('Q672', 'P21', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q648') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q345') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1031') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1032') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1084') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1317') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1433') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1434') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1594') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1638') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q236') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q661') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q1223') num edges:  1\n","add deductible edge\n","add edge:  ('Q1395', 'P29', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q987', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q296', 'P47', 'Q1852') num edges:  1\n","add deductible edge\n","add edge:  ('Q296', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q296', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1668', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1668', 'P29', 'Q11') num edges:  1\n","add deductible edge\n","add edge:  ('Q1668', 'P29', 'Q1845') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q236') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q92') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q1383') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q1638') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q1639') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q684') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q740', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q236') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q92') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q1383') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q1638') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q1639') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q684') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q555', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q555', 'P45', 'Q1599') num edges:  1\n","add deductible edge\n","add edge:  ('Q555', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q555', 'P29', 'Q1800') num edges:  1\n","add deductible edge\n","add edge:  ('Q555', 'P29', 'Q1844') num edges:  1\n","add deductible edge\n","add edge:  ('Q555', 'P29', 'Q902') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q1140') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q714') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q1312') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q1313') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q150') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q477') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q987') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P45', 'Q733') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P29', 'Q913') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P29', 'Q1800') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P29', 'Q902') num edges:  1\n","add deductible edge\n","add edge:  ('Q1245', 'P29', 'Q1544') num edges:  1\n","add deductible edge\n","add edge:  ('Q673', 'P21', 'Q1891') num edges:  1\n","add deductible edge\n","add edge:  ('Q1030', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P22', 'Q1888') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P19', 'Q1868') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1419', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P19', 'Q147') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q427', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q202', 'P4', 'Q1857') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q150') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q985') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1058') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1059') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1035') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1224') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1591') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P29', 'Q449') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P29', 'Q700') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P29', 'Q918') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P29', 'Q1302') num edges:  1\n","add deductible edge\n","add edge:  ('Q945', 'P4', 'Q1803') num edges:  1\n","add deductible edge\n","add edge:  ('Q945', 'P4', 'Q1849') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q186') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q722') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q728') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q910') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q960') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q961') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1086') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1100') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1115') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1126') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1434') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1573') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1606') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1787') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q295') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1003') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1004') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1294') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1792') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q661') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P22', 'Q1888') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P19', 'Q1867') num edges:  1\n","add deductible edge\n","add edge:  ('Q802', 'P20', 'Q1858') num edges:  1\n","add deductible edge\n","add edge:  ('Q750', 'P45', 'Q733') num edges:  1\n","add deductible edge\n","add edge:  ('Q1443', 'P43', 'Q1812') num edges:  1\n","add deductible edge\n","add edge:  ('Q1443', 'P43', 'Q1819') num edges:  1\n","add deductible edge\n","add edge:  ('Q1124', 'P47', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1124', 'P47', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1124', 'P43', 'Q885') num edges:  1\n","add deductible edge\n","add edge:  ('Q1124', 'P43', 'Q870') num edges:  1\n","add deductible edge\n","add edge:  ('Q1100', 'P22', 'Q1888') num edges:  1\n","add deductible edge\n","add edge:  ('Q1100', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1100', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q705') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q1212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q1213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q1225') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q659') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q660') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q985') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q1220') num edges:  1\n","add deductible edge\n","add edge:  ('Q1899', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q757', 'P21', 'Q1891') num edges:  1\n","add deductible edge\n","add edge:  ('Q757', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1886') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1873') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1874') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1883') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1823') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1822') num edges:  1\n","add deductible edge\n","add edge:  ('Q1376', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1376', 'P29', 'Q902') num edges:  1\n","add deductible edge\n","add edge:  ('Q1376', 'P29', 'Q1544') num edges:  1\n","add deductible edge\n","add edge:  ('Q896', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q896', 'P45', 'Q259') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q705') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q1212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q1213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q1225') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q659') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q660') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q985') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q1220') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q649') num edges:  1\n","add deductible edge\n","add edge:  ('Q1752', 'P45', 'Q1211') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1891') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q236') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q92') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q1383') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q1638') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q1639') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q684') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q559', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1825') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1826') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1827') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1897') num edges:  1\n","add deductible edge\n","add edge:  ('Q1633', 'P18', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q432', 'P11', 'Q1863') num edges:  1\n","add deductible edge\n","add edge:  ('Q432', 'P11', 'Q1831') num edges:  1\n","add deductible edge\n","add edge:  ('Q1755', 'P38', 'Q1808') num edges:  1\n","add deductible edge\n","add edge:  ('Q1755', 'P38', 'Q1807') num edges:  1\n","add deductible edge\n","add edge:  ('Q1817', 'P18', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1817', 'P18', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1817', 'P18', 'Q1166') num edges:  1\n","add deductible edge\n","add edge:  ('Q1817', 'P18', 'Q1622') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P6', 'Q917') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P6', 'Q1163') num edges:  1\n","add deductible edge\n","add edge:  ('Q823', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q823', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q818', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1166', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1166', 'P21', 'Q683') num edges:  1\n","add deductible edge\n","add edge:  ('Q1166', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q994', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q994', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q994', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q447', 'P30', 'Q1870') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P15', 'Q776') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1825') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1826') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1827') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1897') num edges:  1\n","add deductible edge\n","add edge:  ('Q623', 'P47', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q623', 'P47', 'Q377') num edges:  1\n","add deductible edge\n","add edge:  ('Q623', 'P47', 'Q1770') num edges:  1\n","add deductible edge\n","add edge:  ('Q623', 'P43', 'Q1891') num edges:  1\n","add deductible edge\n","add edge:  ('Q623', 'P30', 'Q1870') num edges:  1\n","add deductible edge\n","add edge:  ('Q584', 'P18', 'Q1816') num edges:  1\n","add deductible edge\n","add edge:  ('Q1145', 'P21', 'Q1891') num edges:  1\n","add deductible edge\n","add edge:  ('Q1145', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1873') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1874') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1883') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1822') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1823') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1872') num edges:  1\n","add deductible edge\n","add edge:  ('Q667', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q245') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1093') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1094') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1158') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1260') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1275') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1335') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1487') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1687') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1688') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1888') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q776') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q778') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q136') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1110') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1334') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1353') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1435') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1679') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1744') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q572') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q664') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1879') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q630') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q829') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q747') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q365') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q38') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q691') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q839') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q1633') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q1476') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q147') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q836') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q837') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P19', 'Q1867') num edges:  1\n","add deductible edge\n","add edge:  ('Q1017', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1290', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1700', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q1886') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q1873') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q1874') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P47', 'Q586') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P47', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P32', 'Q589') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P32', 'Q155') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P32', 'Q688') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P32', 'Q1467') num edges:  1\n","add deductible edge\n","add edge:  ('Q28', 'P30', 'Q1870') num edges:  1\n","add deductible edge\n","add edge:  ('Q1411', 'P29', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q1491', 'P21', 'Q683') num edges:  1\n","add deductible edge\n","add edge:  ('Q1491', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q1491', 'P32', 'Q1897') num edges:  1\n","add deductible edge\n","add edge:  ('Q658', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q658', 'P19', 'Q691') num edges:  1\n","add deductible edge\n","add edge:  ('Q658', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1612', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q1612', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1612', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1146', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1346', 'P45', 'Q259') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q186') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q722') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q728') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q910') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q960') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q961') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1086') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1100') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1115') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1126') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1434') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1573') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1606') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1787') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q295') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1003') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1004') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1294') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1792') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q661') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P20', 'Q272') num edges:  1\n","add deductible edge\n","add edge:  ('Q1396', 'P29', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q680', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q680', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q680', 'P30', 'Q1870') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q345') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q683') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q1117') num edges:  1\n","add deductible edge\n","add edge:  ('Q40', 'P21', 'Q1733') num edges:  1\n","add deductible edge\n","add edge:  ('Q1791', 'P6', 'Q937') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P22', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P19', 'Q747') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P6', 'Q1854') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P6', 'Q1855') num edges:  1\n","add deductible edge\n","add edge:  ('Q1896', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1896', 'P19', 'Q1633') num edges:  1\n","add deductible edge\n","add edge:  ('Q1896', 'P19', 'Q365') num edges:  1\n","add deductible edge\n","add edge:  ('Q1896', 'P19', 'Q839') num edges:  1\n","add deductible edge\n","add edge:  ('Q1896', 'P19', 'Q691') num edges:  1\n","add deductible edge\n","add edge:  ('Q1589', 'P19', 'Q1867') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1873') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1874') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1883') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1822') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1872') num edges:  1\n","add deductible edge\n","add edge:  ('Q1273', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q632', 'P47', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q632', 'P47', 'Q1814') num edges:  1\n","add deductible edge\n","add edge:  ('Q655', 'P21', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q858', 'P4', 'Q1857') num edges:  1\n","add deductible edge\n","add edge:  ('Q713', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q713', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q314') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q96') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q952') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q796') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q1337') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q911', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q911', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q300') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q720') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1049') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q666') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q724') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1022') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1047') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1081') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1737') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1738') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q682') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1085') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1086') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1237') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q759') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q961') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q171') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q607') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1758') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1583') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1294') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1604') num edges:  1\n","add deductible edge\n","add edge:  ('Q1640', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q1640', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1640', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q979', 'P21', 'Q683') num edges:  1\n","add deductible edge\n","add edge:  ('Q979', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q979', 'P21', 'Q1117') num edges:  1\n","add deductible edge\n","add edge:  ('Q979', 'P21', 'Q1733') num edges:  1\n","add deductible edge\n","add edge:  ('Q803', 'P21', 'Q1891') num edges:  1\n","add deductible edge\n","add edge:  ('Q1446', 'P4', 'Q1849') num edges:  1\n","add deductible edge\n","add edge:  ('Q1393', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1244', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1244', 'P45', 'Q259') num edges:  1\n","add deductible edge\n","add edge:  ('Q1244', 'P29', 'Q913') num edges:  1\n","add deductible edge\n","add edge:  ('Q1244', 'P29', 'Q1800') num edges:  1\n","add deductible edge\n","add edge:  ('Q834', 'P32', 'Q1784') num edges:  1\n","add deductible edge\n","add edge:  ('Q834', 'P32', 'Q1897') num edges:  1\n","add deductible edge\n","add edge:  ('Q752', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q752', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q385', 'P44', 'Q176') num edges:  1\n","add deductible edge\n","add edge:  ('Q385', 'P44', 'Q1728') num edges:  1\n","add deductible edge\n","add edge:  ('Q851', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q851', 'P18', 'Q50') num edges:  1\n","add deductible edge\n","add edge:  ('Q1616', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P47', 'Q1019') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P43', 'Q1810') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P43', 'Q1811') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q591') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q689') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q373') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1005') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1012') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1367') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1408') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1409') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1468') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1588') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1589') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1784') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1785') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1825') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1826') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1827') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1897') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1011') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q482') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1783') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1394') num edges:  1\n","add deductible edge\n","add edge:  ('Q347', 'P32', 'Q1784') num edges:  1\n","add deductible edge\n","add edge:  ('Q347', 'P32', 'Q1897') num edges:  1\n","add deductible edge\n","add edge:  ('Q1699', 'P45', 'Q89') num edges:  1\n","add child edge\n","add edge:  ('Q1900', 'P24', 'Q1046') num edges:  1\n","add edge:  ('Q818', 'P29', 'Q1900') num edges:  1\n","add edge:  ('Q1900', 'P24', 'Q853') num edges:  1\n","add edge:  ('Q1900', 'P37', 'Q917') num edges:  1\n","add edge:  ('Q941', 'P26', 'Q1900') num edges:  1\n","add edge:  ('Q655', 'P21', 'Q1900') num edges:  1\n","add child edge\n","add edge:  ('Q655', 'P21', 'Q1901') num edges:  1\n","add edge:  ('Q185', 'P26', 'Q1901') num edges:  1\n","add edge:  ('Q1901', 'P38', 'Q834') num edges:  1\n","add edge:  ('Q1901', 'P49', 'Q612') num edges:  1\n","add edge:  ('Q1901', 'P38', 'Q751') num edges:  1\n","add edge:  ('Q1901', 'P25', 'Q91') num edges:  1\n","add child edge\n","add edge:  ('Q1902', 'P25', 'Q91') num edges:  1\n","add edge:  ('Q1902', 'P38', 'Q1680') num edges:  1\n","add edge:  ('Q1902', 'P25', 'Q1822') num edges:  1\n","add edge:  ('Q1902', 'P38', 'Q312') num edges:  1\n","add edge:  ('Q206', 'P26', 'Q1902') num edges:  1\n","add edge:  ('Q1107', 'P21', 'Q1902') num edges:  1\n","add child edge\n","add edge:  ('Q1107', 'P21', 'Q1903') num edges:  1\n","add edge:  ('Q1903', 'P1', 'Q667') num edges:  1\n","add edge:  ('Q1439', 'P21', 'Q1903') num edges:  1\n","add edge:  ('Q299', 'P26', 'Q1903') num edges:  1\n","add edge:  ('Q1145', 'P21', 'Q1903') num edges:  1\n","add edge:  ('Q926', 'P26', 'Q1903') num edges:  1\n","add child edge\n","add edge:  ('Q926', 'P26', 'Q1904') num edges:  1\n","add edge:  ('Q1904', 'P38', 'Q796') num edges:  1\n","add edge:  ('Q1904', 'P17', 'Q1391') num edges:  1\n","add edge:  ('Q1904', 'P38', 'Q1493') num edges:  1\n","add edge:  ('Q616', 'P7', 'Q1904') num edges:  1\n","add edge:  ('Q1904', 'P7', 'Q781') num edges:  1\n","add child edge\n","add edge:  ('Q1905', 'P7', 'Q781') num edges:  1\n","add edge:  ('Q1849', 'P43', 'Q1905') num edges:  1\n","add edge:  ('Q1905', 'P7', 'Q413') num edges:  1\n","add edge:  ('Q879', 'P7', 'Q1905') num edges:  1\n","add edge:  ('Q780', 'P38', 'Q1905') num edges:  1\n","add edge:  ('Q1905', 'P26', 'Q1117') num edges:  1\n","add child edge\n","add edge:  ('Q1906', 'P26', 'Q1117') num edges:  1\n","add edge:  ('Q484', 'P34', 'Q1906') num edges:  1\n","add edge:  ('Q1906', 'P26', 'Q1900') num edges:  1\n","add edge:  ('Q720', 'P37', 'Q1906') num edges:  1\n","add edge:  ('Q1906', 'P43', 'Q1641') num edges:  1\n","add edge:  ('Q1906', 'P30', 'Q317') num edges:  1\n","add child edge\n","add edge:  ('Q1907', 'P30', 'Q317') num edges:  1\n","add edge:  ('Q1907', 'P7', 'Q1797') num edges:  1\n","add edge:  ('Q830', 'P7', 'Q1907') num edges:  1\n","add edge:  ('Q1907', 'P38', 'Q1191') num edges:  1\n","add edge:  ('Q294', 'P26', 'Q1907') num edges:  1\n","add edge:  ('Q1907', 'P37', 'Q679') num edges:  1\n","add child edge\n","add edge:  ('Q1908', 'P37', 'Q679') num edges:  1\n","add edge:  ('Q1908', 'P6', 'Q608') num edges:  1\n","add edge:  ('Q1908', 'P37', 'Q497') num edges:  1\n","add edge:  ('Q1908', 'P24', 'Q181') num edges:  1\n","add edge:  ('Q1510', 'P29', 'Q1908') num edges:  1\n","add edge:  ('Q1908', 'P24', 'Q1256') num edges:  1\n","add child edge\n","add edge:  ('Q1909', 'P24', 'Q1256') num edges:  1\n","add edge:  ('Q1909', 'P37', 'Q1674') num edges:  1\n","add edge:  ('Q1909', 'P24', 'Q794') num edges:  1\n","add edge:  ('Q1909', 'P37', 'Q1711') num edges:  1\n","add edge:  ('Q1909', 'P24', 'Q788') num edges:  1\n","add edge:  ('Q1909', 'P37', 'Q925') num edges:  1\n","add child edge\n","add edge:  ('Q1910', 'P37', 'Q925') num edges:  1\n","add edge:  ('Q1910', 'P6', 'Q925') num edges:  1\n","add edge:  ('Q1910', 'P22', 'Q1724') num edges:  1\n","add edge:  ('Q976', 'P45', 'Q1910') num edges:  1\n","add edge:  ('Q1910', 'P22', 'Q1501') num edges:  1\n","add edge:  ('Q1910', 'P6', 'Q1763') num edges:  1\n","add child edge\n","add edge:  ('Q1911', 'P6', 'Q1763') num edges:  1\n","add edge:  ('Q1911', 'P37', 'Q1053') num edges:  1\n","add edge:  ('Q947', 'P26', 'Q1911') num edges:  1\n","add edge:  ('Q1911', 'P38', 'Q1873') num edges:  1\n","add edge:  ('Q398', 'P7', 'Q1911') num edges:  1\n","add edge:  ('Q781', 'P38', 'Q1911') num edges:  1\n","add child edge\n","add edge:  ('Q781', 'P38', 'Q1912') num edges:  1\n","add edge:  ('Q940', 'P42', 'Q1912') num edges:  1\n","add edge:  ('Q1912', 'P30', 'Q1726') num edges:  1\n","add edge:  ('Q920', 'P42', 'Q1912') num edges:  1\n","add edge:  ('Q724', 'P38', 'Q1912') num edges:  1\n","add edge:  ('Q1912', 'P26', 'Q868') num edges:  1\n","add child edge\n","add edge:  ('Q1913', 'P26', 'Q868') num edges:  1\n","add edge:  ('Q781', 'P38', 'Q1913') num edges:  1\n","add edge:  ('Q967', 'P30', 'Q1913') num edges:  1\n","add edge:  ('Q1913', 'P40', 'Q1759') num edges:  1\n","add edge:  ('Q347', 'P30', 'Q1913') num edges:  1\n","add edge:  ('Q678', 'P20', 'Q1913') num edges:  1\n","add child edge\n","add edge:  ('Q678', 'P20', 'Q1914') num edges:  1\n","add edge:  ('Q332', 'P30', 'Q1914') num edges:  1\n","add edge:  ('Q1914', 'P40', 'Q1624') num edges:  1\n","add edge:  ('Q1914', 'P29', 'Q1304') num edges:  1\n","add edge:  ('Q1914', 'P45', 'Q659') num edges:  1\n","add edge:  ('Q1460', 'P3', 'Q1914') num edges:  1\n","add child edge\n","add edge:  ('Q1460', 'P3', 'Q1915') num edges:  1\n","add edge:  ('Q1915', 'P14', 'Q136') num edges:  1\n","add edge:  ('Q1574', 'P17', 'Q1915') num edges:  1\n","add edge:  ('Q1915', 'P14', 'Q521') num edges:  1\n","add edge:  ('Q570', 'P3', 'Q1915') num edges:  1\n","add edge:  ('Q1915', 'P14', 'Q1307') num edges:  1\n","add child edge\n","add edge:  ('Q1916', 'P14', 'Q1307') num edges:  1\n","add edge:  ('Q1593', 'P17', 'Q1916') num edges:  1\n","add edge:  ('Q1916', 'P14', 'Q665') num edges:  1\n","add edge:  ('Q1461', 'P3', 'Q1916') num edges:  1\n","add edge:  ('Q1916', 'P45', 'Q1213') num edges:  1\n","add edge:  ('Q472', 'P19', 'Q1916') num edges:  1\n","add child edge\n","add edge:  ('Q472', 'P19', 'Q1917') num edges:  1\n","add edge:  ('Q1917', 'P49', 'Q939') num edges:  1\n","add edge:  ('Q1917', 'P38', 'Q663') num edges:  1\n","add edge:  ('Q1554', 'P7', 'Q1917') num edges:  1\n","add edge:  ('Q1917', 'P7', 'Q314') num edges:  1\n","add edge:  ('Q799', 'P14', 'Q1917') num edges:  1\n","add child edge\n","add edge:  ('Q799', 'P14', 'Q1918') num edges:  1\n","add edge:  ('Q132', 'P22', 'Q1918') num edges:  1\n","add edge:  ('Q1865', 'P14', 'Q1918') num edges:  1\n","add edge:  ('Q1918', 'P7', 'Q1076') num edges:  1\n","add edge:  ('Q1201', 'P43', 'Q1918') num edges:  1\n","add edge:  ('Q1918', 'P13', 'Q377') num edges:  1\n","add child edge\n","add edge:  ('Q1919', 'P13', 'Q377') num edges:  1\n","add edge:  ('Q1019', 'P10', 'Q1919') num edges:  1\n","add edge:  ('Q1919', 'P13', 'Q850') num edges:  1\n","add edge:  ('Q1919', 'P21', 'Q1022') num edges:  1\n","add edge:  ('Q1919', 'P3', 'Q270') num edges:  1\n","add edge:  ('Q979', 'P46', 'Q1919') num edges:  1\n","add child edge\n","add edge:  ('Q979', 'P46', 'Q1920') num edges:  1\n","add edge:  ('Q1920', 'P34', 'Q739') num edges:  1\n","add edge:  ('Q1843', 'P46', 'Q1920') num edges:  1\n","add edge:  ('Q1920', 'P3', 'Q699') num edges:  1\n","add edge:  ('Q1920', 'P21', 'Q743') num edges:  1\n","add edge:  ('Q1920', 'P13', 'Q89') num edges:  1\n","add child edge\n","add edge:  ('Q1921', 'P13', 'Q89') num edges:  1\n","add edge:  ('Q718', 'P43', 'Q1921') num edges:  1\n","add edge:  ('Q1921', 'P7', 'Q1294') num edges:  1\n","add edge:  ('Q1034', 'P7', 'Q1921') num edges:  1\n","add edge:  ('Q954', 'P38', 'Q1921') num edges:  1\n","add edge:  ('Q1921', 'P26', 'Q1737') num edges:  1\n","add child edge\n","add edge:  ('Q1922', 'P26', 'Q1737') num edges:  1\n","add edge:  ('Q360', 'P49', 'Q1922') num edges:  1\n","add edge:  ('Q1922', 'P26', 'Q1606') num edges:  1\n","add edge:  ('Q1658', 'P34', 'Q1922') num edges:  1\n","add edge:  ('Q1922', 'P26', 'Q191') num edges:  1\n","add edge:  ('Q1519', 'P38', 'Q1922') num edges:  1\n","add child edge\n","add edge:  ('Q1519', 'P38', 'Q1923') num edges:  1\n","add edge:  ('Q1258', 'P7', 'Q1923') num edges:  1\n","add edge:  ('Q1217', 'P24', 'Q1923') num edges:  1\n","add edge:  ('Q1923', 'P5', 'Q993') num edges:  1\n","add edge:  ('Q780', 'P38', 'Q1923') num edges:  1\n","add edge:  ('Q1923', 'P5', 'Q212') num edges:  1\n","add child edge\n","add edge:  ('Q1924', 'P5', 'Q212') num edges:  1\n","add edge:  ('Q1608', 'P38', 'Q1924') num edges:  1\n","add edge:  ('Q766', 'P42', 'Q1924') num edges:  1\n","add edge:  ('Q1924', 'P30', 'Q250') num edges:  1\n","add edge:  ('Q1924', 'P43', 'Q682') num edges:  1\n","add edge:  ('Q1924', 'P30', 'Q1269') num edges:  1\n","add child edge\n","add edge:  ('Q1925', 'P30', 'Q1269') num edges:  1\n","add edge:  ('Q1925', 'P43', 'Q518') num edges:  1\n","add edge:  ('Q1925', 'P30', 'Q817') num edges:  1\n","add edge:  ('Q470', 'P42', 'Q1925') num edges:  1\n","add edge:  ('Q1049', 'P38', 'Q1925') num edges:  1\n","add edge:  ('Q1126', 'P7', 'Q1925') num edges:  1\n","add child edge\n","add edge:  ('Q1126', 'P7', 'Q1926') num edges:  1\n","add edge:  ('Q1926', 'P7', 'Q1517') num edges:  1\n","add edge:  ('Q754', 'P43', 'Q1926') num edges:  1\n","add edge:  ('Q1926', 'P7', 'Q1187') num edges:  1\n","add edge:  ('Q514', 'P43', 'Q1926') num edges:  1\n","add edge:  ('Q1926', 'P13', 'Q1525') num edges:  1\n","add child edge\n","add edge:  ('Q1927', 'P13', 'Q1525') num edges:  1\n","add edge:  ('Q330', 'P10', 'Q1927') num edges:  1\n","add edge:  ('Q907', 'P13', 'Q1927') num edges:  1\n","add edge:  ('Q1927', 'P10', 'Q736') num edges:  1\n","add edge:  ('Q1022', 'P1', 'Q1927') num edges:  1\n","add edge:  ('Q1927', 'P10', 'Q725') num edges:  1\n","add child edge\n","add edge:  ('Q1928', 'P10', 'Q725') num edges:  1\n","add edge:  ('Q341', 'P13', 'Q1928') num edges:  1\n","add edge:  ('Q956', 'P18', 'Q1928') num edges:  1\n","add edge:  ('Q690', 'P45', 'Q1928') num edges:  1\n","add edge:  ('Q1928', 'P28', 'Q325') num edges:  1\n","add edge:  ('Q214', 'P12', 'Q1928') num edges:  1\n","add child edge\n","add edge:  ('Q214', 'P12', 'Q1929') num edges:  1\n","add edge:  ('Q1929', 'P28', 'Q1287') num edges:  1\n","add edge:  ('Q1083', 'P45', 'Q1929') num edges:  1\n","add edge:  ('Q1929', 'P22', 'Q1889') num edges:  1\n","add edge:  ('Q1244', 'P45', 'Q1929') num edges:  1\n","add edge:  ('Q1929', 'P28', 'Q1458') num edges:  1\n","add child edge\n","add edge:  ('Q1930', 'P28', 'Q1458') num edges:  1\n","add edge:  ('Q754', 'P43', 'Q1930') num edges:  1\n","add edge:  ('Q1930', 'P13', 'Q1211') num edges:  1\n","add edge:  ('Q1930', 'P21', 'Q92') num edges:  1\n","add edge:  ('Q1707', 'P4', 'Q1930') num edges:  1\n","add edge:  ('Q1648', 'P40', 'Q1930') num edges:  1\n","add child edge\n","add edge:  ('Q1648', 'P40', 'Q1931') num edges:  1\n","add edge:  ('Q555', 'P29', 'Q1931') num edges:  1\n","add edge:  ('Q713', 'P40', 'Q1931') num edges:  1\n","add edge:  ('Q1531', 'P29', 'Q1931') num edges:  1\n","add edge:  ('Q1931', 'P24', 'Q879') num edges:  1\n","add edge:  ('Q1346', 'P29', 'Q1931') num edges:  1\n","add child edge\n","add edge:  ('Q1346', 'P29', 'Q1932') num edges:  1\n","add edge:  ('Q818', 'P40', 'Q1932') num edges:  1\n","add edge:  ('Q1710', 'P4', 'Q1932') num edges:  1\n","add edge:  ('Q840', 'P40', 'Q1932') num edges:  1\n","add edge:  ('Q947', 'P4', 'Q1932') num edges:  1\n","add edge:  ('Q1376', 'P40', 'Q1932') num edges:  1\n","add child edge\n","add edge:  ('Q1376', 'P40', 'Q1933') num edges:  1\n","add edge:  ('Q769', 'P4', 'Q1933') num edges:  1\n","add edge:  ('Q1933', 'P21', 'Q1084') num edges:  1\n","add edge:  ('Q1933', 'P13', 'Q1254') num edges:  1\n","add edge:  ('Q501', 'P10', 'Q1933') num edges:  1\n","add edge:  ('Q1933', 'P38', 'Q94') num edges:  1\n","add child edge\n","add edge:  ('Q1934', 'P38', 'Q94') num edges:  1\n","add edge:  ('Q1934', 'P49', 'Q939') num edges:  1\n","add edge:  ('Q1210', 'P19', 'Q1934') num edges:  1\n","add edge:  ('Q1934', 'P10', 'Q222') num edges:  1\n","add edge:  ('Q1669', 'P34', 'Q1934') num edges:  1\n","add edge:  ('Q1934', 'P26', 'Q1606') num edges:  1\n","add child edge\n","add edge:  ('Q1935', 'P26', 'Q1606') num edges:  1\n","add edge:  ('Q526', 'P38', 'Q1935') num edges:  1\n","add edge:  ('Q1935', 'P5', 'Q1109') num edges:  1\n","add edge:  ('Q1103', 'P38', 'Q1935') num edges:  1\n","add edge:  ('Q1713', 'P42', 'Q1935') num edges:  1\n","add edge:  ('Q1935', 'P30', 'Q670') num edges:  1\n","add child edge\n","add edge:  ('Q1936', 'P30', 'Q670') num edges:  1\n","add edge:  ('Q1936', 'P32', 'Q1784') num edges:  1\n","add edge:  ('Q1936', 'P30', 'Q1328') num edges:  1\n","add edge:  ('Q1936', 'P28', 'Q599') num edges:  1\n","add edge:  ('Q1936', 'P30', 'Q1040') num edges:  1\n","add edge:  ('Q1936', 'P7', 'Q793') num edges:  1\n","add child edge\n","add edge:  ('Q1937', 'P7', 'Q793') num edges:  1\n","add edge:  ('Q1937', 'P30', 'Q1268') num edges:  1\n","add edge:  ('Q1937', 'P32', 'Q1375') num edges:  1\n","add edge:  ('Q1937', 'P30', 'Q317') num edges:  1\n","add edge:  ('Q1937', 'P7', 'Q508') num edges:  1\n","add edge:  ('Q706', 'P14', 'Q1937') num edges:  1\n","add child edge\n","add edge:  ('Q706', 'P14', 'Q1938') num edges:  1\n","add edge:  ('Q1790', 'P22', 'Q1938') num edges:  1\n","add edge:  ('Q629', 'P14', 'Q1938') num edges:  1\n","add edge:  ('Q1130', 'P22', 'Q1938') num edges:  1\n","add edge:  ('Q1015', 'P14', 'Q1938') num edges:  1\n","add edge:  ('Q1938', 'P7', 'Q181') num edges:  1\n","add child edge\n","add edge:  ('Q1939', 'P7', 'Q181') num edges:  1\n","add edge:  ('Q507', 'P7', 'Q1939') num edges:  1\n","add edge:  ('Q1023', 'P24', 'Q1939') num edges:  1\n","add edge:  ('Q1159', 'P7', 'Q1939') num edges:  1\n","add edge:  ('Q1939', 'P7', 'Q773') num edges:  1\n","add edge:  ('Q1546', 'P43', 'Q1939') num edges:  1\n","add child edge\n","add edge:  ('Q1546', 'P43', 'Q1940') num edges:  1\n","add edge:  ('Q185', 'P26', 'Q1940') num edges:  1\n","add edge:  ('Q1940', 'P38', 'Q1685') num edges:  1\n","add edge:  ('Q1335', 'P7', 'Q1940') num edges:  1\n","add edge:  ('Q811', 'P38', 'Q1940') num edges:  1\n","add edge:  ('Q456', 'P30', 'Q1940') num edges:  1\n","add child edge\n","add edge:  ('Q456', 'P30', 'Q1941') num edges:  1\n","add edge:  ('Q182', 'P20', 'Q1941') num edges:  1\n","add edge:  ('Q355', 'P30', 'Q1941') num edges:  1\n","add edge:  ('Q1941', 'P8', 'Q1467') num edges:  1\n","add edge:  ('Q1554', 'P30', 'Q1941') num edges:  1\n","add edge:  ('Q797', 'P38', 'Q1941') num edges:  1\n","add child edge\n","add edge:  ('Q797', 'P38', 'Q1942') num edges:  1\n","add edge:  ('Q858', 'P42', 'Q1942') num edges:  1\n","add edge:  ('Q724', 'P38', 'Q1942') num edges:  1\n","add edge:  ('Q1942', 'P5', 'Q345') num edges:  1\n","add edge:  ('Q1018', 'P25', 'Q1942') num edges:  1\n","add edge:  ('Q1942', 'P5', 'Q1505') num edges:  1\n","add child edge\n","add edge:  ('Q1943', 'P5', 'Q1505') num edges:  1\n","add edge:  ('Q1079', 'P25', 'Q1943') num edges:  1\n","add edge:  ('Q1943', 'P5', 'Q988') num edges:  1\n","add edge:  ('Q1018', 'P25', 'Q1943') num edges:  1\n","add edge:  ('Q1943', 'P5', 'Q993') num edges:  1\n","add edge:  ('Q724', 'P25', 'Q1943') num edges:  1\n","add child edge\n","add edge:  ('Q724', 'P25', 'Q1944') num edges:  1\n","add edge:  ('Q1944', 'P5', 'Q1433') num edges:  1\n","add edge:  ('Q1609', 'P38', 'Q1944') num edges:  1\n","add edge:  ('Q1944', 'P26', 'Q682') num edges:  1\n","add edge:  ('Q1476', 'P49', 'Q1944') num edges:  1\n","add edge:  ('Q1944', 'P26', 'Q171') num edges:  1\n","add child edge\n","add edge:  ('Q1945', 'P26', 'Q171') num edges:  1\n","add edge:  ('Q1848', 'P34', 'Q1945') num edges:  1\n","add edge:  ('Q1945', 'P10', 'Q1404') num edges:  1\n","add edge:  ('Q1422', 'P13', 'Q1945') num edges:  1\n","add edge:  ('Q1945', 'P10', 'Q452') num edges:  1\n","add edge:  ('Q1945', 'P18', 'Q1623') num edges:  1\n","add child edge\n","add edge:  ('Q1946', 'P18', 'Q1623') num edges:  1\n","add edge:  ('Q795', 'P5', 'Q1946') num edges:  1\n","add edge:  ('Q1946', 'P18', 'Q729') num edges:  1\n","add edge:  ('Q1720', 'P5', 'Q1946') num edges:  1\n","add edge:  ('Q1946', 'P18', 'Q1035') num edges:  1\n","add edge:  ('Q1946', 'P10', 'Q149') num edges:  1\n","add child edge\n","add edge:  ('Q1947', 'P10', 'Q149') num edges:  1\n","add edge:  ('Q998', 'P34', 'Q1947') num edges:  1\n","add edge:  ('Q1947', 'P10', 'Q561') num edges:  1\n","add edge:  ('Q1595', 'P1', 'Q1947') num edges:  1\n","add edge:  ('Q1947', 'P10', 'Q367') num edges:  1\n","add edge:  ('Q1947', 'P18', 'Q1770') num edges:  1\n","add child edge\n","add edge:  ('Q1948', 'P18', 'Q1770') num edges:  1\n","add edge:  ('Q845', 'P5', 'Q1948') num edges:  1\n","add edge:  ('Q682', 'P21', 'Q1948') num edges:  1\n","add edge:  ('Q731', 'P26', 'Q1948') num edges:  1\n","add edge:  ('Q1948', 'P37', 'Q739') num edges:  1\n","add edge:  ('Q279', 'P26', 'Q1948') num edges:  1\n","add child edge\n","add edge:  ('Q279', 'P26', 'Q1949') num edges:  1\n","add edge:  ('Q1949', 'P38', 'Q1558') num edges:  1\n","add edge:  ('Q1949', 'P17', 'Q1014') num edges:  1\n","add edge:  ('Q1949', 'P38', 'Q1808') num edges:  1\n","add edge:  ('Q1949', 'P49', 'Q1267') num edges:  1\n","add edge:  ('Q1949', 'P38', 'Q1193') num edges:  1\n","add child edge\n","add edge:  ('Q1950', 'P38', 'Q1193') num edges:  1\n","add edge:  ('Q1950', 'P17', 'Q1479') num edges:  1\n","add edge:  ('Q1950', 'P38', 'Q1493') num edges:  1\n","add edge:  ('Q1167', 'P10', 'Q1950') num edges:  1\n","add edge:  ('Q1950', 'P49', 'Q1876') num edges:  1\n","add edge:  ('Q696', 'P19', 'Q1950') num edges:  1\n","add child edge\n","add edge:  ('Q696', 'P19', 'Q1951') num edges:  1\n","add edge:  ('Q1278', 'P41', 'Q1951') num edges:  1\n","add edge:  ('Q715', 'P19', 'Q1951') num edges:  1\n","add edge:  ('Q1951', 'P45', 'Q1211') num edges:  1\n","add edge:  ('Q654', 'P3', 'Q1951') num edges:  1\n","add edge:  ('Q1951', 'P14', 'Q830') num edges:  1\n","add child edge\n","add edge:  ('Q1952', 'P14', 'Q830') num edges:  1\n","add edge:  ('Q1459', 'P3', 'Q1952') num edges:  1\n","add edge:  ('Q1952', 'P19', 'Q147') num edges:  1\n","add edge:  ('Q1291', 'P3', 'Q1952') num edges:  1\n","add edge:  ('Q1952', 'P45', 'Q1211') num edges:  1\n","add edge:  ('Q1152', 'P19', 'Q1952') num edges:  1\n","add child edge\n","add edge:  ('Q1152', 'P19', 'Q1953') num edges:  1\n","add edge:  ('Q1953', 'P45', 'Q368') num edges:  1\n","add edge:  ('Q363', 'P19', 'Q1953') num edges:  1\n","add edge:  ('Q1953', 'P10', 'Q1852') num edges:  1\n","add edge:  ('Q974', 'P19', 'Q1953') num edges:  1\n","add edge:  ('Q473', 'P41', 'Q1953') num edges:  1\n","add child edge\n","add edge:  ('Q473', 'P41', 'Q1954') num edges:  1\n","add edge:  ('Q1421', 'P19', 'Q1954') num edges:  1\n","add edge:  ('Q1954', 'P10', 'Q1794') num edges:  1\n","add edge:  ('Q1954', 'P18', 'Q1352') num edges:  1\n","add edge:  ('Q1954', 'P10', 'Q175') num edges:  1\n","add edge:  ('Q1595', 'P1', 'Q1954') num edges:  1\n","add child edge\n","add edge:  ('Q1595', 'P1', 'Q1955') num edges:  1\n","add edge:  ('Q1955', 'P10', 'Q452') num edges:  1\n","add edge:  ('Q1069', 'P34', 'Q1955') num edges:  1\n","add edge:  ('Q1955', 'P26', 'Q425') num edges:  1\n","add edge:  ('Q1338', 'P49', 'Q1955') num edges:  1\n","add edge:  ('Q1955', 'P42', 'Q1194') num edges:  1\n","add child edge\n","add edge:  ('Q1956', 'P42', 'Q1194') num edges:  1\n","add edge:  ('Q1230', 'P49', 'Q1956') num edges:  1\n","add edge:  ('Q1956', 'P42', 'Q1872') num edges:  1\n","add edge:  ('Q1956', 'P4', 'Q1441') num edges:  1\n","add edge:  ('Q1956', 'P42', 'Q421') num edges:  1\n","add edge:  ('Q1102', 'P49', 'Q1956') num edges:  1\n","add child edge\n","add edge:  ('Q1102', 'P49', 'Q1957') num edges:  1\n","add edge:  ('Q1957', 'P26', 'Q1833') num edges:  1\n","add edge:  ('Q266', 'P34', 'Q1957') num edges:  1\n","add edge:  ('Q1957', 'P26', 'Q186') num edges:  1\n","add edge:  ('Q732', 'P49', 'Q1957') num edges:  1\n","add edge:  ('Q1957', 'P42', 'Q1350') num edges:  1\n","add child edge\n","add edge:  ('Q1958', 'P42', 'Q1350') num edges:  1\n","add edge:  ('Q683', 'P31', 'Q1958') num edges:  1\n","add edge:  ('Q1958', 'P42', 'Q1912') num edges:  1\n","add edge:  ('Q469', 'P49', 'Q1958') num edges:  1\n","add edge:  ('Q1958', 'P26', 'Q1295') num edges:  1\n","add edge:  ('Q1601', 'P37', 'Q1958') num edges:  1\n","add child edge\n","add edge:  ('Q1601', 'P37', 'Q1959') num edges:  1\n","add edge:  ('Q1959', 'P43', 'Q759') num edges:  1\n","add edge:  ('Q1959', 'P0', 'Q1409') num edges:  1\n","add edge:  ('Q1959', 'P43', 'Q870') num edges:  1\n","add edge:  ('Q1959', 'P0', 'Q1245') num edges:  1\n","add edge:  ('Q1959', 'P43', 'Q1081') num edges:  1\n","add child edge\n","add edge:  ('Q1960', 'P43', 'Q1081') num edges:  1\n","add edge:  ('Q1960', 'P30', 'Q1172') num edges:  1\n","add edge:  ('Q1960', 'P28', 'Q1281') num edges:  1\n","add edge:  ('Q1440', 'P43', 'Q1960') num edges:  1\n","add edge:  ('Q1960', 'P7', 'Q1080') num edges:  1\n","add edge:  ('Q1960', 'P30', 'Q1558') num edges:  1\n","add child edge\n","add edge:  ('Q1961', 'P30', 'Q1558') num edges:  1\n","add edge:  ('Q1961', 'P32', 'Q274') num edges:  1\n","add edge:  ('Q1961', 'P30', 'Q1941') num edges:  1\n","add edge:  ('Q766', 'P42', 'Q1961') num edges:  1\n","add edge:  ('Q1961', 'P30', 'Q1269') num edges:  1\n","add edge:  ('Q1961', 'P7', 'Q788') num edges:  1\n","add child edge\n","add edge:  ('Q1962', 'P7', 'Q788') num edges:  1\n","add edge:  ('Q1088', 'P14', 'Q1962') num edges:  1\n","add edge:  ('Q1962', 'P7', 'Q1515') num edges:  1\n","add edge:  ('Q520', 'P14', 'Q1962') num edges:  1\n","add edge:  ('Q900', 'P22', 'Q1962') num edges:  1\n","add edge:  ('Q1962', 'P41', 'Q365') num edges:  1\n","add child edge\n","add edge:  ('Q1963', 'P41', 'Q365') num edges:  1\n","add edge:  ('Q1208', 'P22', 'Q1963') num edges:  1\n","add edge:  ('Q1009', 'P14', 'Q1963') num edges:  1\n","add edge:  ('Q58', 'P22', 'Q1963') num edges:  1\n","add edge:  ('Q1479', 'P14', 'Q1963') num edges:  1\n","add edge:  ('Q1963', 'P7', 'Q1926') num edges:  1\n","add child edge\n","add edge:  ('Q1964', 'P7', 'Q1926') num edges:  1\n","add edge:  ('Q1426', 'P14', 'Q1964') num edges:  1\n","add edge:  ('Q1964', 'P7', 'Q1169') num edges:  1\n","add edge:  ('Q296', 'P43', 'Q1964') num edges:  1\n","add edge:  ('Q97', 'P26', 'Q1964') num edges:  1\n","add edge:  ('Q1964', 'P37', 'Q925') num edges:  1\n","add child edge\n","add edge:  ('Q1965', 'P37', 'Q925') num edges:  1\n","add edge:  ('Q1965', 'P24', 'Q926') num edges:  1\n","add edge:  ('Q1965', 'P37', 'Q679') num edges:  1\n","add edge:  ('Q1965', 'P6', 'Q679') num edges:  1\n","add edge:  ('Q1965', 'P22', 'Q245') num edges:  1\n","add edge:  ('Q1965', 'P6', 'Q1203') num edges:  1\n","add child edge\n","add edge:  ('Q1966', 'P6', 'Q1203') num edges:  1\n","add edge:  ('Q1966', 'P22', 'Q1572') num edges:  1\n","add edge:  ('Q1966', 'P6', 'Q1580') num edges:  1\n","add edge:  ('Q1966', 'P37', 'Q281') num edges:  1\n","add edge:  ('Q606', 'P26', 'Q1966') num edges:  1\n","add edge:  ('Q1966', 'P37', 'Q279') num edges:  1\n","add child edge\n","add edge:  ('Q1967', 'P37', 'Q279') num edges:  1\n","add edge:  ('Q825', 'P26', 'Q1967') num edges:  1\n","add edge:  ('Q1967', 'P38', 'Q94') num edges:  1\n","add edge:  ('Q1817', 'P10', 'Q1967') num edges:  1\n","add edge:  ('Q1967', 'P49', 'Q937') num edges:  1\n","add edge:  ('Q451', 'P10', 'Q1967') num edges:  1\n","add child edge\n","add edge:  ('Q451', 'P10', 'Q1968') num edges:  1\n","add edge:  ('Q1108', 'P13', 'Q1968') num edges:  1\n","add edge:  ('Q1968', 'P10', 'Q149') num edges:  1\n","add edge:  ('Q1595', 'P1', 'Q1968') num edges:  1\n","add edge:  ('Q1968', 'P10', 'Q611') num edges:  1\n","add edge:  ('Q1968', 'P18', 'Q850') num edges:  1\n","add child edge\n","add edge:  ('Q1969', 'P18', 'Q850') num edges:  1\n","add edge:  ('Q1747', 'P5', 'Q1969') num edges:  1\n","add edge:  ('Q1969', 'P31', 'Q857') num edges:  1\n","add edge:  ('Q1042', 'P5', 'Q1969') num edges:  1\n","add edge:  ('Q836', 'P21', 'Q1969') num edges:  1\n","add edge:  ('Q424', 'P26', 'Q1969') num edges:  1\n","add child edge\n","add edge:  ('Q424', 'P26', 'Q1970') num edges:  1\n","add edge:  ('Q1970', 'P38', 'Q1685') num edges:  1\n","add edge:  ('Q1970', 'P25', 'Q1196') num edges:  1\n","add edge:  ('Q1970', 'P38', 'Q1912') num edges:  1\n","add edge:  ('Q3', 'P10', 'Q1970') num edges:  1\n","add edge:  ('Q1970', 'P49', 'Q612') num edges:  1\n","add child edge\n","add edge:  ('Q1971', 'P49', 'Q612') num edges:  1\n","add edge:  ('Q686', 'P19', 'Q1971') num edges:  1\n","add edge:  ('Q1276', 'P41', 'Q1971') num edges:  1\n","add edge:  ('Q472', 'P19', 'Q1971') num edges:  1\n","add edge:  ('Q1971', 'P45', 'Q342') num edges:  1\n","add edge:  ('Q1971', 'P29', 'Q1849') num edges:  1\n","add child edge\n","add edge:  ('Q1972', 'P29', 'Q1849') num edges:  1\n","add edge:  ('Q1972', 'P40', 'Q680') num edges:  1\n","add edge:  ('Q1972', 'P29', 'Q902') num edges:  1\n","add edge:  ('Q1972', 'P45', 'Q649') num edges:  1\n","add edge:  ('Q1972', 'P29', 'Q918') num edges:  1\n","add edge:  ('Q1972', 'P40', 'Q917') num edges:  1\n","add child edge\n","add edge:  ('Q1973', 'P40', 'Q917') num edges:  1\n","add edge:  ('Q1181', 'P30', 'Q1973') num edges:  1\n","add edge:  ('Q675', 'P20', 'Q1973') num edges:  1\n","add edge:  ('Q914', 'P30', 'Q1973') num edges:  1\n","add edge:  ('Q90', 'P38', 'Q1973') num edges:  1\n","add edge:  ('Q876', 'P7', 'Q1973') num edges:  1\n","add child edge\n","add edge:  ('Q876', 'P7', 'Q1974') num edges:  1\n","add edge:  ('Q1621', 'P38', 'Q1974') num edges:  1\n","add edge:  ('Q927', 'P42', 'Q1974') num edges:  1\n","add edge:  ('Q1974', 'P30', 'Q708') num edges:  1\n","add edge:  ('Q1974', 'P28', 'Q1655') num edges:  1\n","add edge:  ('Q1974', 'P30', 'Q1285') num edges:  1\n","add child edge\n","add edge:  ('Q1975', 'P30', 'Q1285') num edges:  1\n","add edge:  ('Q766', 'P42', 'Q1975') num edges:  1\n","add edge:  ('Q1975', 'P30', 'Q644') num edges:  1\n","add edge:  ('Q1975', 'P28', 'Q1419') num edges:  1\n","add edge:  ('Q1975', 'P30', 'Q1725') num edges:  1\n","add edge:  ('Q1778', 'P42', 'Q1975') num edges:  1\n","add child edge\n","add edge:  ('Q1778', 'P42', 'Q1976') num edges:  1\n","add edge:  ('Q984', 'P38', 'Q1976') num edges:  1\n","add edge:  ('Q1446', 'P42', 'Q1976') num edges:  1\n","add edge:  ('Q1976', 'P30', 'Q951') num edges:  1\n","add edge:  ('Q1976', 'P7', 'Q181') num edges:  1\n","add edge:  ('Q834', 'P7', 'Q1976') num edges:  1\n","add child edge\n","add edge:  ('Q834', 'P7', 'Q1977') num edges:  1\n","add edge:  ('Q1977', 'P7', 'Q1824') num edges:  1\n","add edge:  ('Q814', 'P43', 'Q1977') num edges:  1\n","add edge:  ('Q1977', 'P28', 'Q107') num edges:  1\n","add edge:  ('Q541', 'P12', 'Q1977') num edges:  1\n","add edge:  ('Q1977', 'P28', 'Q1290') num edges:  1\n","add child edge\n","add edge:  ('Q1978', 'P28', 'Q1290') num edges:  1\n","add edge:  ('Q650', 'P12', 'Q1978') num edges:  1\n","add edge:  ('Q1978', 'P28', 'Q652') num edges:  1\n","add edge:  ('Q1829', 'P45', 'Q1978') num edges:  1\n","add edge:  ('Q1978', 'P22', 'Q1724') num edges:  1\n","add edge:  ('Q1978', 'P6', 'Q1189') num edges:  1\n","add child edge\n","add edge:  ('Q1979', 'P6', 'Q1189') num edges:  1\n","add edge:  ('Q1979', 'P22', 'Q829') num edges:  1\n","add edge:  ('Q555', 'P45', 'Q1979') num edges:  1\n","add edge:  ('Q1979', 'P22', 'Q463') num edges:  1\n","add edge:  ('Q1979', 'P19', 'Q147') num edges:  1\n","add edge:  ('Q260', 'P32', 'Q1979') num edges:  1\n","add child edge\n","add edge:  ('Q260', 'P32', 'Q1980') num edges:  1\n","add edge:  ('Q372', 'P8', 'Q1980') num edges:  1\n","add edge:  ('Q1440', 'P32', 'Q1980') num edges:  1\n","add edge:  ('Q1980', 'P19', 'Q747') num edges:  1\n","add edge:  ('Q1065', 'P3', 'Q1980') num edges:  1\n","add edge:  ('Q1980', 'P45', 'Q586') num edges:  1\n","add child edge\n","add edge:  ('Q1981', 'P45', 'Q586') num edges:  1\n","add edge:  ('Q801', 'P3', 'Q1981') num edges:  1\n","add edge:  ('Q1981', 'P14', 'Q876') num edges:  1\n","add edge:  ('Q654', 'P3', 'Q1981') num edges:  1\n","add edge:  ('Q1981', 'P19', 'Q402') num edges:  1\n","add edge:  ('Q981', 'P32', 'Q1981') num edges:  1\n","add child edge\n","add edge:  ('Q981', 'P32', 'Q1982') num edges:  1\n","add edge:  ('Q709', 'P8', 'Q1982') num edges:  1\n","add edge:  ('Q923', 'P32', 'Q1982') num edges:  1\n","add edge:  ('Q1982', 'P19', 'Q1139') num edges:  1\n","add edge:  ('Q917', 'P32', 'Q1982') num edges:  1\n","add edge:  ('Q711', 'P8', 'Q1982') num edges:  1\n","add child edge\n","add edge:  ('Q711', 'P8', 'Q1983') num edges:  1\n","add edge:  ('Q1094', 'P32', 'Q1983') num edges:  1\n","add edge:  ('Q1983', 'P19', 'Q986') num edges:  1\n","add edge:  ('Q1983', 'P22', 'Q876') num edges:  1\n","add edge:  ('Q987', 'P45', 'Q1983') num edges:  1\n","add edge:  ('Q991', 'P18', 'Q1983') num edges:  1\n","add child edge\n","add edge:  ('Q991', 'P18', 'Q1984') num edges:  1\n","add edge:  ('Q130', 'P45', 'Q1984') num edges:  1\n","add edge:  ('Q1984', 'P28', 'Q896') num edges:  1\n","add edge:  ('Q541', 'P12', 'Q1984') num edges:  1\n","add edge:  ('Q1984', 'P28', 'Q442') num edges:  1\n","add edge:  ('Q323', 'P12', 'Q1984') num edges:  1\n","add child edge\n","add edge:  ('Q323', 'P12', 'Q1985') num edges:  1\n","add edge:  ('Q1985', 'P28', 'Q1670') num edges:  1\n","add edge:  ('Q1341', 'P45', 'Q1985') num edges:  1\n","add edge:  ('Q1985', 'P22', 'Q354') num edges:  1\n","add edge:  ('Q713', 'P45', 'Q1985') num edges:  1\n","add edge:  ('Q1985', 'P22', 'Q1688') num edges:  1\n","add child edge\n","add edge:  ('Q1986', 'P22', 'Q1688') num edges:  1\n","add edge:  ('Q1986', 'P19', 'Q691') num edges:  1\n","add edge:  ('Q1184', 'P32', 'Q1986') num edges:  1\n","add edge:  ('Q263', 'P8', 'Q1986') num edges:  1\n","add edge:  ('Q246', 'P32', 'Q1986') num edges:  1\n","add edge:  ('Q1986', 'P19', 'Q38') num edges:  1\n","add child edge\n","add edge:  ('Q1987', 'P19', 'Q38') num edges:  1\n","add edge:  ('Q917', 'P32', 'Q1987') num edges:  1\n","add edge:  ('Q1987', 'P19', 'Q747') num edges:  1\n","add edge:  ('Q1262', 'P32', 'Q1987') num edges:  1\n","add edge:  ('Q711', 'P8', 'Q1987') num edges:  1\n","add edge:  ('Q916', 'P32', 'Q1987') num edges:  1\n","add child edge\n","add edge:  ('Q916', 'P32', 'Q1988') num edges:  1\n","add edge:  ('Q1527', 'P8', 'Q1988') num edges:  1\n","add edge:  ('Q95', 'P32', 'Q1988') num edges:  1\n","add edge:  ('Q1988', 'P19', 'Q1633') num edges:  1\n","add edge:  ('Q1148', 'P3', 'Q1988') num edges:  1\n","add edge:  ('Q1988', 'P45', 'Q985') num edges:  1\n","add child edge\n","add edge:  ('Q1989', 'P45', 'Q985') num edges:  1\n","add edge:  ('Q1989', 'P29', 'Q449') num edges:  1\n","add edge:  ('Q1989', 'P40', 'Q754') num edges:  1\n","add edge:  ('Q1989', 'P29', 'Q700') num edges:  1\n","add edge:  ('Q1989', 'P45', 'Q1220') num edges:  1\n","add edge:  ('Q813', 'P3', 'Q1989') num edges:  1\n","add child edge\n","add edge:  ('Q813', 'P3', 'Q1990') num edges:  1\n","add edge:  ('Q1990', 'P19', 'Q747') num edges:  1\n","add edge:  ('Q1990', 'P22', 'Q1110') num edges:  1\n","add edge:  ('Q1990', 'P19', 'Q851') num edges:  1\n","add edge:  ('Q260', 'P32', 'Q1990') num edges:  1\n","add edge:  ('Q842', 'P8', 'Q1990') num edges:  1\n","add child edge\n","add edge:  ('Q842', 'P8', 'Q1991') num edges:  1\n","add edge:  ('Q246', 'P32', 'Q1991') num edges:  1\n","add edge:  ('Q843', 'P8', 'Q1991') num edges:  1\n","add edge:  ('Q95', 'P32', 'Q1991') num edges:  1\n","add edge:  ('Q1991', 'P19', 'Q38') num edges:  1\n","add edge:  ('Q20', 'P32', 'Q1991') num edges:  1\n","add child edge\n","add edge:  ('Q20', 'P32', 'Q1992') num edges:  1\n","add edge:  ('Q1992', 'P19', 'Q147') num edges:  1\n","add edge:  ('Q1149', 'P3', 'Q1992') num edges:  1\n","add edge:  ('Q1992', 'P45', 'Q1598') num edges:  1\n","add edge:  ('Q472', 'P19', 'Q1992') num edges:  1\n","add edge:  ('Q1992', 'P49', 'Q621') num edges:  1\n","add child edge\n","add edge:  ('Q1993', 'P49', 'Q621') num edges:  1\n","add edge:  ('Q1993', 'P38', 'Q208') num edges:  1\n","add edge:  ('Q1551', 'P26', 'Q1993') num edges:  1\n","add edge:  ('Q1993', 'P38', 'Q1884') num edges:  1\n","add edge:  ('Q1993', 'P49', 'Q394') num edges:  1\n","add edge:  ('Q376', 'P10', 'Q1993') num edges:  1\n","add child edge\n","add edge:  ('Q376', 'P10', 'Q1994') num edges:  1\n","add edge:  ('Q1994', 'P13', 'Q50') num edges:  1\n","add edge:  ('Q1045', 'P43', 'Q1994') num edges:  1\n","add edge:  ('Q1994', 'P7', 'Q96') num edges:  1\n","add edge:  ('Q180', 'P7', 'Q1994') num edges:  1\n","add edge:  ('Q1994', 'P7', 'Q180') num edges:  1\n","add child edge\n","add edge:  ('Q1995', 'P7', 'Q180') num edges:  1\n","add edge:  ('Q754', 'P43', 'Q1995') num edges:  1\n","add edge:  ('Q1995', 'P7', 'Q1318') num edges:  1\n","add edge:  ('Q70', 'P7', 'Q1995') num edges:  1\n","add edge:  ('Q1995', 'P38', 'Q1275') num edges:  1\n","add edge:  ('Q1224', 'P10', 'Q1995') num edges:  1\n","add child edge\n","add edge:  ('Q1224', 'P10', 'Q1996') num edges:  1\n","add edge:  ('Q1996', 'P13', 'Q586') num edges:  1\n","add edge:  ('Q1996', 'P46', 'Q266') num edges:  1\n","add edge:  ('Q871', 'P6', 'Q1996') num edges:  1\n","add edge:  ('Q1048', 'P37', 'Q1996') num edges:  1\n","add edge:  ('Q1996', 'P26', 'Q900') num edges:  1\n","add child edge\n","add edge:  ('Q1997', 'P26', 'Q900') num edges:  1\n","add edge:  ('Q410', 'P38', 'Q1997') num edges:  1\n","add edge:  ('Q768', 'P42', 'Q1997') num edges:  1\n","add edge:  ('Q90', 'P38', 'Q1997') num edges:  1\n","add edge:  ('Q202', 'P42', 'Q1997') num edges:  1\n","add edge:  ('Q1104', 'P38', 'Q1997') num edges:  1\n","add child edge\n","add edge:  ('Q1104', 'P38', 'Q1998') num edges:  1\n","add edge:  ('Q911', 'P30', 'Q1998') num edges:  1\n","add edge:  ('Q1049', 'P38', 'Q1998') num edges:  1\n","add edge:  ('Q137', 'P30', 'Q1998') num edges:  1\n","add edge:  ('Q781', 'P38', 'Q1998') num edges:  1\n","add edge:  ('Q1998', 'P5', 'Q1505') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1983') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1987') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q1234', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1273', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1273', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1273', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1273', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1283', 'P20', 'Q1273') num edges:  1\n","add deductible edge\n","add edge:  ('Q1980', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1980', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1980', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q501', 'P18', 'Q1254') num edges:  1\n","add deductible edge\n","add edge:  ('Q695', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q695', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q695', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1714', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q389', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q389', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q389', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q958', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q958', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q958', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1680', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q1680', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q1680', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1680', 'P38', 'Q1076') num edges:  1\n","add deductible edge\n","add edge:  ('Q970', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q970', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q970', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1290', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1290', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1290', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1290', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1049', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1049', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1049', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1049', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q130', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q323', 'P11', 'Q1914') num edges:  1\n","add deductible edge\n","add edge:  ('Q323', 'P11', 'Q1915') num edges:  1\n","add deductible edge\n","add edge:  ('Q1183', 'P15', 'Q495') num edges:  1\n","add deductible edge\n","add edge:  ('Q1183', 'P15', 'Q664') num edges:  1\n","add deductible edge\n","add edge:  ('Q1183', 'P15', 'Q245') num edges:  1\n","add deductible edge\n","add edge:  ('Q1183', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q1183', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1183', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q870', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q870', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q774') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q1354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q1680') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q1684') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q631') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1950', 'P38', 'Q1926') num edges:  1\n","add deductible edge\n","add edge:  ('Q1019', 'P18', 'Q377') num edges:  1\n","add deductible edge\n","add edge:  ('Q1019', 'P18', 'Q850') num edges:  1\n","add deductible edge\n","add edge:  ('Q994', 'P24', 'Q180') num edges:  1\n","add deductible edge\n","add edge:  ('Q994', 'P24', 'Q1318') num edges:  1\n","add deductible edge\n","add edge:  ('Q448', 'P29', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q448', 'P29', 'Q1933') num edges:  1\n","add deductible edge\n","add edge:  ('Q1079', 'P38', 'Q421') num edges:  1\n","add deductible edge\n","add edge:  ('Q1079', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1079', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q1079', 'P38', 'Q1350') num edges:  1\n","add deductible edge\n","add edge:  ('Q1079', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q496', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q496', 'P22', 'Q136') num edges:  1\n","add deductible edge\n","add edge:  ('Q496', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q496', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q690', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q690', 'P29', 'Q1930') num edges:  1\n","add deductible edge\n","add edge:  ('Q690', 'P29', 'Q1931') num edges:  1\n","add deductible edge\n","add edge:  ('Q885', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q913', 'P47', 'Q1220') num edges:  1\n","add deductible edge\n","add edge:  ('Q913', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q700', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q700', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q720', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1461', 'P20', 'Q272') num edges:  1\n","add deductible edge\n","add edge:  ('Q1100', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1100', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1688', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1126', 'P22', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1126', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1126', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1126', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q993', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q369', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1381', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1381', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1381', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1381', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1381', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q607', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q916', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q916', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q916', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q472', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q472', 'P19', 'Q1953') num edges:  1\n","add deductible edge\n","add edge:  ('Q472', 'P19', 'Q1954') num edges:  1\n","add deductible edge\n","add edge:  ('Q716', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q716', 'P19', 'Q1953') num edges:  1\n","add deductible edge\n","add edge:  ('Q716', 'P19', 'Q1954') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q777') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q829') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1486') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1276') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P15', 'Q1277') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q478', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q382', 'P15', 'Q1278') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P24', 'Q180') num edges:  1\n","add deductible edge\n","add edge:  ('Q1209', 'P24', 'Q1318') num edges:  1\n","add deductible edge\n","add edge:  ('Q1907', 'P24', 'Q617') num edges:  1\n","add deductible edge\n","add edge:  ('Q1907', 'P24', 'Q966') num edges:  1\n","add deductible edge\n","add edge:  ('Q1907', 'P24', 'Q1040') num edges:  1\n","add deductible edge\n","add edge:  ('Q1907', 'P24', 'Q1450') num edges:  1\n","add deductible edge\n","add edge:  ('Q1907', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1907', 'P24', 'Q880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1018', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1018', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q1018', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q1018', 'P38', 'Q1054') num edges:  1\n","add deductible edge\n","add edge:  ('Q1103', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q410', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q410', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q410', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q410', 'P38', 'Q1076') num edges:  1\n","add deductible edge\n","add edge:  ('Q410', 'P38', 'Q1939') num edges:  1\n","add deductible edge\n","add edge:  ('Q410', 'P38', 'Q1926') num edges:  1\n","add deductible edge\n","add edge:  ('Q410', 'P38', 'Q1169') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P47', 'Q377') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P15', 'Q604') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P15', 'Q1157') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P15', 'Q168') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P15', 'Q776') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q1201', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1707', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1087', 'P38', 'Q1939') num edges:  1\n","add deductible edge\n","add edge:  ('Q1087', 'P38', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q708', 'P45', 'Q1623') num edges:  1\n","add deductible edge\n","add edge:  ('Q708', 'P45', 'Q1035') num edges:  1\n","add deductible edge\n","add edge:  ('Q514', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q514', 'P47', 'Q1525') num edges:  1\n","add deductible edge\n","add edge:  ('Q514', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q514', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1604', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1105', 'P38', 'Q421') num edges:  1\n","add deductible edge\n","add edge:  ('Q1105', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1105', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q1003', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1443', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q94') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q872') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q873') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1445') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q129') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q253') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q312') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1193') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1194') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1195') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1695') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q421') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q639') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q949') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1558') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q203') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q935') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q828') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1184') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1351') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1142') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1444') num edges:  1\n","add deductible edge\n","add edge:  ('Q1901', 'P38', 'Q1823') num edges:  1\n","add deductible edge\n","add edge:  ('Q427', 'P45', 'Q1928') num edges:  1\n","add deductible edge\n","add edge:  ('Q427', 'P45', 'Q1623') num edges:  1\n","add deductible edge\n","add edge:  ('Q1788', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q663', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q663', 'P32', 'Q1983') num edges:  1\n","add deductible edge\n","add edge:  ('Q663', 'P32', 'Q1987') num edges:  1\n","add deductible edge\n","add edge:  ('Q663', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q769', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q865', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q865', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q865', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1208', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1208', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1208', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1208', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1288', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1288', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1288', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1288', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1288', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1115', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q861', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q390') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q679') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q726') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q746') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q1906') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q606') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q925') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q1143') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q1144') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q1779') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q1854') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q1855') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q941') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P6', 'Q739') num edges:  1\n","add deductible edge\n","add edge:  ('Q1904', 'P38', 'Q774') num edges:  1\n","add deductible edge\n","add edge:  ('Q1904', 'P38', 'Q1884') num edges:  1\n","add deductible edge\n","add edge:  ('Q1904', 'P38', 'Q1885') num edges:  1\n","add deductible edge\n","add edge:  ('Q756', 'P21', 'Q1294') num edges:  1\n","add deductible edge\n","add edge:  ('Q756', 'P21', 'Q1583') num edges:  1\n","add deductible edge\n","add edge:  ('Q654', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q654', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q654', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q654', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q654', 'P21', 'Q404') num edges:  1\n","add deductible edge\n","add edge:  ('Q654', 'P21', 'Q1317') num edges:  1\n","add deductible edge\n","add edge:  ('Q654', 'P21', 'Q1484') num edges:  1\n","add deductible edge\n","add edge:  ('Q229', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q738', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q738', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q738', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q738', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1774', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q214', 'P11', 'Q326') num edges:  1\n","add deductible edge\n","add edge:  ('Q214', 'P11', 'Q1015') num edges:  1\n","add deductible edge\n","add edge:  ('Q214', 'P11', 'Q685') num edges:  1\n","add deductible edge\n","add edge:  ('Q214', 'P11', 'Q1425') num edges:  1\n","add deductible edge\n","add edge:  ('Q1272', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1272', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1272', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1272', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q541', 'P11', 'Q1988') num edges:  1\n","add deductible edge\n","add edge:  ('Q541', 'P11', 'Q1952') num edges:  1\n","add deductible edge\n","add edge:  ('Q541', 'P11', 'Q1914') num edges:  1\n","add deductible edge\n","add edge:  ('Q541', 'P11', 'Q1915') num edges:  1\n","add deductible edge\n","add edge:  ('Q541', 'P11', 'Q619') num edges:  1\n","add deductible edge\n","add edge:  ('Q541', 'P11', 'Q1356') num edges:  1\n","add deductible edge\n","add edge:  ('Q541', 'P11', 'Q1644') num edges:  1\n","add deductible edge\n","add edge:  ('Q1970', 'P38', 'Q639') num edges:  1\n","add deductible edge\n","add edge:  ('Q1970', 'P38', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1970', 'P38', 'Q751') num edges:  1\n","add deductible edge\n","add edge:  ('Q1970', 'P38', 'Q935') num edges:  1\n","add deductible edge\n","add edge:  ('Q1970', 'P38', 'Q1444') num edges:  1\n","add deductible edge\n","add edge:  ('Q1970', 'P38', 'Q1823') num edges:  1\n","add deductible edge\n","add edge:  ('Q1988', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q1988', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1446', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q36', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1403', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q715', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q715', 'P19', 'Q1953') num edges:  1\n","add deductible edge\n","add edge:  ('Q715', 'P19', 'Q1954') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P19', 'Q256') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P19', 'Q747') num edges:  1\n","add deductible edge\n","add edge:  ('Q1601', 'P6', 'Q606') num edges:  1\n","add deductible edge\n","add edge:  ('Q911', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q911', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q911', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1739', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q341', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q724', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q724', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q724', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q724', 'P38', 'Q1350') num edges:  1\n","add deductible edge\n","add edge:  ('Q760', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q760', 'P21', 'Q92') num edges:  1\n","add deductible edge\n","add edge:  ('Q760', 'P21', 'Q1733') num edges:  1\n","add deductible edge\n","add edge:  ('Q1218', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q759', 'P38', 'Q1926') num edges:  1\n","add deductible edge\n","add edge:  ('Q1721', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1721', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1721', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1963') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P32', 'Q1983') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P32', 'Q1987') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q90', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q90', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q90', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q90', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q90', 'P38', 'Q1924') num edges:  1\n","add deductible edge\n","add edge:  ('Q90', 'P38', 'Q1961') num edges:  1\n","add deductible edge\n","add edge:  ('Q90', 'P38', 'Q1935') num edges:  1\n","add deductible edge\n","add edge:  ('Q973', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q829', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q1193', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1193', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1193', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q680', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q680', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q680', 'P43', 'Q425') num edges:  1\n","add deductible edge\n","add edge:  ('Q1519', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1519', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q825', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1579', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q1338', 'P38', 'Q1939') num edges:  1\n","add deductible edge\n","add edge:  ('Q718', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q718', 'P47', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q718', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q718', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1363', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q822', 'P47', 'Q1968') num edges:  1\n","add deductible edge\n","add edge:  ('Q1609', 'P38', 'Q1924') num edges:  1\n","add deductible edge\n","add edge:  ('Q1609', 'P38', 'Q1961') num edges:  1\n","add deductible edge\n","add edge:  ('Q1609', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1609', 'P38', 'Q1935') num edges:  1\n","add deductible edge\n","add edge:  ('Q1609', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q318', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q318', 'P45', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q318', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q318', 'P45', 'Q1166') num edges:  1\n","add deductible edge\n","add edge:  ('Q318', 'P45', 'Q1622') num edges:  1\n","add deductible edge\n","add edge:  ('Q1001', 'P44', 'Q1956') num edges:  1\n","add deductible edge\n","add edge:  ('Q1001', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1001', 'P19', 'Q1971') num edges:  1\n","add deductible edge\n","add edge:  ('Q1987', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1987', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1987', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q51', 'P21', 'Q1294') num edges:  1\n","add deductible edge\n","add edge:  ('Q51', 'P21', 'Q1583') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P22', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P19', 'Q256') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1979', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q927', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q927', 'P4', 'Q120') num edges:  1\n","add deductible edge\n","add edge:  ('Q927', 'P4', 'Q913') num edges:  1\n","add deductible edge\n","add edge:  ('Q927', 'P4', 'Q754') num edges:  1\n","add deductible edge\n","add edge:  ('Q927', 'P4', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q461', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q461', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q461', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q461', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q504', 'P24', 'Q1939') num edges:  1\n","add deductible edge\n","add edge:  ('Q1421', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1421', 'P44', 'Q176') num edges:  1\n","add deductible edge\n","add edge:  ('Q1421', 'P44', 'Q1728') num edges:  1\n","add deductible edge\n","add edge:  ('Q1421', 'P19', 'Q1953') num edges:  1\n","add deductible edge\n","add edge:  ('Q1184', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1184', 'P32', 'Q1983') num edges:  1\n","add deductible edge\n","add edge:  ('Q1184', 'P32', 'Q1987') num edges:  1\n","add deductible edge\n","add edge:  ('Q1184', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1949', 'P38', 'Q508') num edges:  1\n","add deductible edge\n","add edge:  ('Q1949', 'P38', 'Q1110') num edges:  1\n","add deductible edge\n","add edge:  ('Q1949', 'P38', 'Q1516') num edges:  1\n","add deductible edge\n","add edge:  ('Q1949', 'P38', 'Q1517') num edges:  1\n","add deductible edge\n","add edge:  ('Q1235', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1235', 'P21', 'Q988') num edges:  1\n","add deductible edge\n","add edge:  ('Q1235', 'P21', 'Q92') num edges:  1\n","add deductible edge\n","add edge:  ('Q1235', 'P21', 'Q1733') num edges:  1\n","add deductible edge\n","add edge:  ('Q905', 'P21', 'Q1109') num edges:  1\n","add deductible edge\n","add edge:  ('Q417', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q417', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q417', 'P38', 'Q1350') num edges:  1\n","add deductible edge\n","add edge:  ('Q417', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q177', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q177', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q177', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q177', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q177', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q177', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1096', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1448', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q981', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q981', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q981', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q981', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q981', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q981', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1192', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1192', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1192', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q678', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q1211', 'P19', 'Q1951') num edges:  1\n","add deductible edge\n","add edge:  ('Q1983', 'P44', 'Q929') num edges:  1\n","add deductible edge\n","add edge:  ('Q1983', 'P44', 'Q185') num edges:  1\n","add deductible edge\n","add edge:  ('Q1523', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q684', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q684', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q684', 'P6', 'Q917') num edges:  1\n","add deductible edge\n","add edge:  ('Q684', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1152', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1152', 'P19', 'Q1954') num edges:  1\n","add deductible edge\n","add edge:  ('Q954', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q954', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q954', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q954', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q954', 'P38', 'Q1350') num edges:  1\n","add deductible edge\n","add edge:  ('Q954', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q618', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q618', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q618', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q618', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1681', 'P38', 'Q1076') num edges:  1\n","add deductible edge\n","add edge:  ('Q1954', 'P18', 'Q1770') num edges:  1\n","add deductible edge\n","add edge:  ('Q1954', 'P18', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1776', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q797', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1790', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q346', 'P4', 'Q1759') num edges:  1\n","add deductible edge\n","add edge:  ('Q757', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q757', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q757', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q757', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q757', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1262', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q1262', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1262', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q301', 'P38', 'Q793') num edges:  1\n","add deductible edge\n","add edge:  ('Q301', 'P38', 'Q508') num edges:  1\n","add deductible edge\n","add edge:  ('Q301', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q301', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q301', 'P38', 'Q1923') num edges:  1\n","add deductible edge\n","add edge:  ('Q635', 'P38', 'Q1924') num edges:  1\n","add deductible edge\n","add edge:  ('Q635', 'P38', 'Q1961') num edges:  1\n","add deductible edge\n","add edge:  ('Q635', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q635', 'P38', 'Q1935') num edges:  1\n","add deductible edge\n","add edge:  ('Q635', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q635', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q1712', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1097', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1522', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q1522', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q1522', 'P38', 'Q1923') num edges:  1\n","add deductible edge\n","add edge:  ('Q1522', 'P38', 'Q788') num edges:  1\n","add deductible edge\n","add edge:  ('Q1522', 'P38', 'Q1515') num edges:  1\n","add deductible edge\n","add edge:  ('Q655', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q655', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q655', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1576', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q649') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q1211') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q259') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q1120') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q1166') num edges:  1\n","add deductible edge\n","add edge:  ('Q1870', 'P45', 'Q1622') num edges:  1\n","add deductible edge\n","add edge:  ('Q1630', 'P38', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1630', 'P38', 'Q1926') num edges:  1\n","add deductible edge\n","add edge:  ('Q771', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q943', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q1076') num edges:  1\n","add deductible edge\n","add edge:  ('Q1517', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1304', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1924', 'P47', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1756', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1756', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1756', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1574', 'P38', 'Q522') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P15', 'Q495') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P15', 'Q664') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P15', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P15', 'Q245') num edges:  1\n","add deductible edge\n","add edge:  ('Q982', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1672', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1672', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1672', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1672', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1672', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1959', 'P43', 'Q627') num edges:  1\n","add deductible edge\n","add edge:  ('Q1959', 'P43', 'Q1582') num edges:  1\n","add deductible edge\n","add edge:  ('Q1959', 'P43', 'Q722') num edges:  1\n","add deductible edge\n","add edge:  ('Q1959', 'P43', 'Q1891') num edges:  1\n","add deductible edge\n","add edge:  ('Q171', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q171', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q171', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q171', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1299', 'P38', 'Q1939') num edges:  1\n","add deductible edge\n","add edge:  ('Q1299', 'P38', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q984', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1722', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1722', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1722', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1961', 'P15', 'Q277') num edges:  1\n","add deductible edge\n","add edge:  ('Q1200', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1200', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1200', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q682', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q93', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1022', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1022', 'P22', 'Q136') num edges:  1\n","add deductible edge\n","add edge:  ('Q1022', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1022', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q347', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q928', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1896', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q1896', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q983', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q983', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q983', 'P38', 'Q1923') num edges:  1\n","add deductible edge\n","add edge:  ('Q983', 'P38', 'Q788') num edges:  1\n","add deductible edge\n","add edge:  ('Q983', 'P38', 'Q1515') num edges:  1\n","add deductible edge\n","add edge:  ('Q269', 'P21', 'Q1583') num edges:  1\n","add deductible edge\n","add edge:  ('Q269', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q269', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q269', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q269', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q269', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q456', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q376', 'P18', 'Q50') num edges:  1\n","add deductible edge\n","add edge:  ('Q1124', 'P43', 'Q425') num edges:  1\n","add deductible edge\n","add edge:  ('Q1440', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1440', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1440', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q736', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q815', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q815', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q815', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q815', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1211') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q449') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q700') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q1302') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q340') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q864') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q558') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q717') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q754') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q349') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P29', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q1178', 'P24', 'Q1939') num edges:  1\n","add deductible edge\n","add edge:  ('Q291', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q753', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q753', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q753', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q753', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q753', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q753', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1856', 'P47', 'Q50') num edges:  1\n","add deductible edge\n","add edge:  ('Q1856', 'P47', 'Q1120') num edges:  1\n","add deductible edge\n","add edge:  ('Q1856', 'P47', 'Q1121') num edges:  1\n","add deductible edge\n","add edge:  ('Q1856', 'P47', 'Q1323') num edges:  1\n","add deductible edge\n","add edge:  ('Q350', 'P22', 'Q1963') num edges:  1\n","add deductible edge\n","add edge:  ('Q350', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q350', 'P22', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q350', 'P19', 'Q365') num edges:  1\n","add deductible edge\n","add edge:  ('Q350', 'P19', 'Q147') num edges:  1\n","add deductible edge\n","add edge:  ('Q1295', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1295', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q745', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q745', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q745', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q58', 'P19', 'Q365') num edges:  1\n","add deductible edge\n","add edge:  ('Q803', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q432', 'P11', 'Q1951') num edges:  1\n","add deductible edge\n","add edge:  ('Q432', 'P11', 'Q1981') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q464', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P29', 'Q340') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P29', 'Q864') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P29', 'Q558') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P29', 'Q717') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P29', 'Q754') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P29', 'Q349') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P29', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q526', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q526', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q526', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q650', 'P11', 'Q1951') num edges:  1\n","add deductible edge\n","add edge:  ('Q650', 'P11', 'Q1981') num edges:  1\n","add deductible edge\n","add edge:  ('Q650', 'P11', 'Q619') num edges:  1\n","add deductible edge\n","add edge:  ('Q650', 'P11', 'Q1356') num edges:  1\n","add deductible edge\n","add edge:  ('Q650', 'P11', 'Q1644') num edges:  1\n","add deductible edge\n","add edge:  ('Q972', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q681', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q884', 'P38', 'Q793') num edges:  1\n","add deductible edge\n","add edge:  ('Q884', 'P38', 'Q508') num edges:  1\n","add deductible edge\n","add edge:  ('Q1419', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1419', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1419', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1419', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q446', 'P45', 'Q1623') num edges:  1\n","add deductible edge\n","add edge:  ('Q446', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q446', 'P45', 'Q850') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q777') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q829') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1486') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1276') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P15', 'Q1277') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q246', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1910', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1910', 'P22', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q1910', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q777') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q829') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1486') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1276') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P15', 'Q1277') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q701', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1287', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1287', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1287', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1287', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1287', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1422', 'P21', 'Q454') num edges:  1\n","add deductible edge\n","add edge:  ('Q1422', 'P21', 'Q1119') num edges:  1\n","add deductible edge\n","add edge:  ('Q1422', 'P21', 'Q1214') num edges:  1\n","add deductible edge\n","add edge:  ('Q1149', 'P20', 'Q655') num edges:  1\n","add deductible edge\n","add edge:  ('Q1382', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1382', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1382', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1382', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1577', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q978', 'P38', 'Q793') num edges:  1\n","add deductible edge\n","add edge:  ('Q978', 'P38', 'Q508') num edges:  1\n","add deductible edge\n","add edge:  ('Q978', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1107', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1107', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1107', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1107', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q228', 'P45', 'Q733') num edges:  1\n","add deductible edge\n","add edge:  ('Q228', 'P29', 'Q1930') num edges:  1\n","add deductible edge\n","add edge:  ('Q228', 'P29', 'Q1931') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q390') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q679') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q726') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q746') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q1906') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q606') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q925') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q1143') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q1144') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q1779') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q1854') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q1855') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q941') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P6', 'Q739') num edges:  1\n","add deductible edge\n","add edge:  ('Q1794', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1848', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q282', 'P44', 'Q1876') num edges:  1\n","add deductible edge\n","add edge:  ('Q823', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q823', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q823', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1224', 'P18', 'Q586') num edges:  1\n","add deductible edge\n","add edge:  ('Q1965', 'P24', 'Q617') num edges:  1\n","add deductible edge\n","add edge:  ('Q1965', 'P24', 'Q966') num edges:  1\n","add deductible edge\n","add edge:  ('Q1965', 'P24', 'Q1040') num edges:  1\n","add deductible edge\n","add edge:  ('Q1965', 'P24', 'Q1450') num edges:  1\n","add deductible edge\n","add edge:  ('Q1965', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1965', 'P24', 'Q880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1947', 'P18', 'Q150') num edges:  1\n","add deductible edge\n","add edge:  ('Q1947', 'P18', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1947', 'P18', 'Q985') num edges:  1\n","add deductible edge\n","add edge:  ('Q1947', 'P18', 'Q1035') num edges:  1\n","add deductible edge\n","add edge:  ('Q1947', 'P18', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1612', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1612', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1928', 'P18', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1928', 'P18', 'Q838') num edges:  1\n","add deductible edge\n","add edge:  ('Q685', 'P19', 'Q1951') num edges:  1\n","add deductible edge\n","add edge:  ('Q685', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q685', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1254', 'P18', 'Q1945') num edges:  1\n","add deductible edge\n","add edge:  ('Q1895', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1895', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1895', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1895', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q1895', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1047', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1047', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1145', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1145', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1145', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1145', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q939', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q673', 'P21', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P6', 'Q1906') num edges:  1\n","add deductible edge\n","add edge:  ('Q278', 'P6', 'Q739') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1350') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1924') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1961') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q308', 'P38', 'Q1935') num edges:  1\n","add deductible edge\n","add edge:  ('Q1742', 'P6', 'Q917') num edges:  1\n","add deductible edge\n","add edge:  ('Q1261', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q1261', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1261', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q1755', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q1755', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q1755', 'P38', 'Q1923') num edges:  1\n","add deductible edge\n","add edge:  ('Q1755', 'P38', 'Q788') num edges:  1\n","add deductible edge\n","add edge:  ('Q1755', 'P38', 'Q1515') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q721', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q491', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q586') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q1120') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q1140') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q1141') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q1175') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q1623') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P18', 'Q838') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q236') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q321') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q648') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q345') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1031') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1032') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1084') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1317') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1433') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1434') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1594') num edges:  1\n","add deductible edge\n","add edge:  ('Q1927', 'P21', 'Q1638') num edges:  1\n","add deductible edge\n","add edge:  ('Q1050', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1050', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1050', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P6', 'Q679') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P6', 'Q1613') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P6', 'Q1551') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P6', 'Q826') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P6', 'Q172') num edges:  1\n","add deductible edge\n","add edge:  ('Q1142', 'P38', 'Q793') num edges:  1\n","add deductible edge\n","add edge:  ('Q1142', 'P38', 'Q508') num edges:  1\n","add deductible edge\n","add edge:  ('Q1142', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1990', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1990', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1990', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1990', 'P44', 'Q824') num edges:  1\n","add deductible edge\n","add edge:  ('Q1990', 'P44', 'Q946') num edges:  1\n","add deductible edge\n","add edge:  ('Q1990', 'P44', 'Q1267') num edges:  1\n","add deductible edge\n","add edge:  ('Q1990', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q833', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q758', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q758', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q758', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q758', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1600', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1600', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1210', 'P19', 'Q1971') num edges:  1\n","add deductible edge\n","add edge:  ('Q1968', 'P18', 'Q150') num edges:  1\n","add deductible edge\n","add edge:  ('Q1045', 'P47', 'Q50') num edges:  1\n","add deductible edge\n","add edge:  ('Q209', 'P45', 'Q1928') num edges:  1\n","add deductible edge\n","add edge:  ('Q1442', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1442', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1442', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1128', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1128', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1128', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1217', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q556', 'P47', 'Q1945') num edges:  1\n","add deductible edge\n","add edge:  ('Q556', 'P47', 'Q1220') num edges:  1\n","add deductible edge\n","add edge:  ('Q556', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q241', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1619', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1619', 'P22', 'Q136') num edges:  1\n","add deductible edge\n","add edge:  ('Q1619', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1619', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1048', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q781', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q781', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q781', 'P38', 'Q1350') num edges:  1\n","add deductible edge\n","add edge:  ('Q387', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q387', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q387', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q387', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q387', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q1147', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1147', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1147', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1147', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q705') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q1212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q1213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q1225') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q659') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q660') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q985') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q1220') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q649') num edges:  1\n","add deductible edge\n","add edge:  ('Q1533', 'P45', 'Q1211') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q568', 'P19', 'Q1971') num edges:  1\n","add deductible edge\n","add edge:  ('Q296', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q296', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q296', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1913', 'P29', 'Q122') num edges:  1\n","add deductible edge\n","add edge:  ('Q923', 'P32', 'Q1983') num edges:  1\n","add deductible edge\n","add edge:  ('Q923', 'P32', 'Q1987') num edges:  1\n","add deductible edge\n","add edge:  ('Q923', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q923', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1144', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1144', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1144', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q692', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P47', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1850', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q192', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q192', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q192', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q192', 'P38', 'Q1076') num edges:  1\n","add deductible edge\n","add edge:  ('Q192', 'P38', 'Q1939') num edges:  1\n","add deductible edge\n","add edge:  ('Q1229', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1229', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q1229', 'P38', 'Q1350') num edges:  1\n","add deductible edge\n","add edge:  ('Q1229', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q1229', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1229', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1447', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q395', 'P24', 'Q1911') num edges:  1\n","add deductible edge\n","add edge:  ('Q395', 'P24', 'Q1294') num edges:  1\n","add deductible edge\n","add edge:  ('Q1108', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q785', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q785', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q785', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q785', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1546', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q1546', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q1546', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q1168', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q818', 'P45', 'Q477') num edges:  1\n","add deductible edge\n","add edge:  ('Q1024', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1341', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1130', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1130', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q1206', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q1379', 'P29', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1379', 'P29', 'Q1933') num edges:  1\n","add deductible edge\n","add edge:  ('Q564', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q14', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q14', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q14', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q14', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q14', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q348', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q834', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P6', 'Q499') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P6', 'Q807') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P6', 'Q931') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P6', 'Q1580') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P24', 'Q617') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P24', 'Q966') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P24', 'Q1040') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P24', 'Q1450') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P24', 'Q880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1787', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1244', 'P45', 'Q733') num edges:  1\n","add deductible edge\n","add edge:  ('Q1420', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q1785', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q555', 'P45', 'Q1928') num edges:  1\n","add deductible edge\n","add edge:  ('Q1146', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q1146', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1146', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1146', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q686', 'P44', 'Q1956') num edges:  1\n","add deductible edge\n","add edge:  ('Q686', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q686', 'P44', 'Q1944') num edges:  1\n","add deductible edge\n","add edge:  ('Q1611', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1611', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q946', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1225', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q455', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q995', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q995', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q995', 'P24', 'Q180') num edges:  1\n","add deductible edge\n","add edge:  ('Q995', 'P24', 'Q1318') num edges:  1\n","add deductible edge\n","add edge:  ('Q929', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q770', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q628', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1953', 'P18', 'Q50') num edges:  1\n","add deductible edge\n","add edge:  ('Q871', 'P6', 'Q917') num edges:  1\n","add deductible edge\n","add edge:  ('Q1778', 'P4', 'Q754') num edges:  1\n","add deductible edge\n","add edge:  ('Q1778', 'P4', 'Q349') num edges:  1\n","add deductible edge\n","add edge:  ('Q1778', 'P4', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q272') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q782') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q898') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q899') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q1412') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q1465') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q575') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q654') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q1064') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q1414') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q1534') num edges:  1\n","add deductible edge\n","add edge:  ('Q1919', 'P20', 'Q551') num edges:  1\n","add deductible edge\n","add edge:  ('Q1929', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1929', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q996', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q996', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q996', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q996', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q996', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q793') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q508') num edges:  1\n","add deductible edge\n","add edge:  ('Q1141', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q236') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q321') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q648') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q345') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1031') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1032') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1084') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1317') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1433') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1434') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1594') num edges:  1\n","add deductible edge\n","add edge:  ('Q1926', 'P21', 'Q1638') num edges:  1\n","add deductible edge\n","add edge:  ('Q971', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q971', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q914', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q914', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q914', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1094', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q1094', 'P15', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q1094', 'P15', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q1094', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q1094', 'P32', 'Q1987') num edges:  1\n","add deductible edge\n","add edge:  ('Q613', 'P24', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q1973') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q1974') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q1923') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q788') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q1515') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q793') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q508') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q519', 'P38', 'Q1076') num edges:  1\n","add deductible edge\n","add edge:  ('Q1296', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1699', 'P29', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1699', 'P29', 'Q1933') num edges:  1\n","add deductible edge\n","add edge:  ('Q1004', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q869', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q869', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q836', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q917', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q917', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q378', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q605', 'P19', 'Q1951') num edges:  1\n","add deductible edge\n","add edge:  ('Q605', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q605', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q605', 'P6', 'Q917') num edges:  1\n","add deductible edge\n","add edge:  ('Q330', 'P18', 'Q1525') num edges:  1\n","add deductible edge\n","add edge:  ('Q68', 'P24', 'Q180') num edges:  1\n","add deductible edge\n","add edge:  ('Q68', 'P24', 'Q1318') num edges:  1\n","add deductible edge\n","add edge:  ('Q68', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1393', 'P29', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1393', 'P29', 'Q1933') num edges:  1\n","add deductible edge\n","add edge:  ('Q940', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q668', 'P18', 'Q1927') num edges:  1\n","add deductible edge\n","add edge:  ('Q668', 'P18', 'Q1945') num edges:  1\n","add deductible edge\n","add edge:  ('Q766', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q766', 'P4', 'Q754') num edges:  1\n","add deductible edge\n","add edge:  ('Q766', 'P4', 'Q1856') num edges:  1\n","add deductible edge\n","add edge:  ('Q1775', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1344', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1155', 'P6', 'Q917') num edges:  1\n","add deductible edge\n","add edge:  ('Q1378', 'P29', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q1378', 'P29', 'Q1933') num edges:  1\n","add deductible edge\n","add edge:  ('Q1593', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1593', 'P38', 'Q952') num edges:  1\n","add deductible edge\n","add edge:  ('Q679', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q679', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q679', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q95', 'P32', 'Q1990') num edges:  1\n","add deductible edge\n","add edge:  ('Q95', 'P32', 'Q1980') num edges:  1\n","add deductible edge\n","add edge:  ('Q1631', 'P38', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1631', 'P38', 'Q1926') num edges:  1\n","add deductible edge\n","add edge:  ('Q1631', 'P38', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q705') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q1212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q1213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q1225') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q659') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q660') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1989', 'P29', 'Q1304') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q94') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q872') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q873') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1445') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q129') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q253') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q948') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1193') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1194') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1195') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1695') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q421') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q639') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q949') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1558') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q203') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q935') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q828') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1184') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1351') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1142') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q751') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1444') num edges:  1\n","add deductible edge\n","add edge:  ('Q1902', 'P38', 'Q1823') num edges:  1\n","add deductible edge\n","add edge:  ('Q1946', 'P18', 'Q150') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P6', 'Q923') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P6', 'Q606') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P6', 'Q1675') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P6', 'Q1580') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P6', 'Q931') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P6', 'Q172') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q662') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q774') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q794') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q879') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q926') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q1231') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q1232') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q1256') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q1515') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q1520') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q1804', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P15', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P32', 'Q1986') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P32', 'Q1991') num edges:  1\n","add deductible edge\n","add edge:  ('Q260', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q811', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q811', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q811', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1499', 'P15', 'Q495') num edges:  1\n","add deductible edge\n","add edge:  ('Q1499', 'P15', 'Q664') num edges:  1\n","add deductible edge\n","add edge:  ('Q1499', 'P15', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q1499', 'P15', 'Q245') num edges:  1\n","add deductible edge\n","add edge:  ('Q751', 'P32', 'Q1982') num edges:  1\n","add deductible edge\n","add edge:  ('Q751', 'P32', 'Q1983') num edges:  1\n","add deductible edge\n","add edge:  ('Q751', 'P32', 'Q1987') num edges:  1\n","add deductible edge\n","add edge:  ('Q930', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q239', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q705') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1225') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q659') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q660') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1220') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q649') num edges:  1\n","add deductible edge\n","add edge:  ('Q1828', 'P45', 'Q1211') num edges:  1\n","add deductible edge\n","add edge:  ('Q1621', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q754', 'P47', 'Q1927') num edges:  1\n","add deductible edge\n","add edge:  ('Q754', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q754', 'P47', 'Q1525') num edges:  1\n","add deductible edge\n","add edge:  ('Q754', 'P47', 'Q1211') num edges:  1\n","add deductible edge\n","add edge:  ('Q754', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q754', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q824', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1924') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1961') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1935') num edges:  1\n","add deductible edge\n","add edge:  ('Q780', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P22', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P22', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P19', 'Q147') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1978', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q55', 'P15', 'Q1963') num edges:  1\n","add deductible edge\n","add edge:  ('Q974', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q1342', 'P45', 'Q1813') num edges:  1\n","add deductible edge\n","add edge:  ('Q1342', 'P45', 'Q733') num edges:  1\n","add deductible edge\n","add edge:  ('Q1578', 'P21', 'Q1946') num edges:  1\n","add deductible edge\n","add edge:  ('Q1855', 'P47', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1855', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1855', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1855', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q693', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q693', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q693', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q693', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q693', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q693', 'P24', 'Q1994') num edges:  1\n","add deductible edge\n","add edge:  ('Q363', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q801', 'P21', 'Q1901') num edges:  1\n","add deductible edge\n","add edge:  ('Q801', 'P21', 'Q1940') num edges:  1\n","add deductible edge\n","add edge:  ('Q801', 'P21', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q801', 'P21', 'Q1904') num edges:  1\n","add deductible edge\n","add edge:  ('Q801', 'P21', 'Q404') num edges:  1\n","add deductible edge\n","add edge:  ('Q801', 'P21', 'Q1317') num edges:  1\n","add deductible edge\n","add edge:  ('Q801', 'P21', 'Q1484') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P30', 'Q141') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P30', 'Q670') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P30', 'Q1174') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P30', 'Q1285') num edges:  1\n","add deductible edge\n","add edge:  ('Q814', 'P30', 'Q1494') num edges:  1\n","add deductible edge\n","add edge:  ('Q900', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q900', 'P6', 'Q281') num edges:  1\n","add deductible edge\n","add edge:  ('Q900', 'P6', 'Q279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1339', 'P38', 'Q793') num edges:  1\n","add deductible edge\n","add edge:  ('Q1339', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1339', 'P38', 'Q1907') num edges:  1\n","add deductible edge\n","add edge:  ('Q1339', 'P38', 'Q1926') num edges:  1\n","add deductible edge\n","add edge:  ('Q459', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q459', 'P44', 'Q937') num edges:  1\n","add deductible edge\n","add edge:  ('Q459', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q459', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q662', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q662', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q662', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q662', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q662', 'P38', 'Q1942') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P47', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P47', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1849', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q746', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q746', 'P43', 'Q1948') num edges:  1\n","add deductible edge\n","add edge:  ('Q694', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q694', 'P22', 'Q1963') num edges:  1\n","add deductible edge\n","add edge:  ('Q120', 'P43', 'Q1903') num edges:  1\n","add deductible edge\n","add edge:  ('Q1773', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q945', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q713', 'P45', 'Q1928') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P44', 'Q67') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q1127', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q199', 'P38', 'Q1997') num edges:  1\n","add deductible edge\n","add edge:  ('Q199', 'P38', 'Q1912') num edges:  1\n","add deductible edge\n","add edge:  ('Q199', 'P38', 'Q1975') num edges:  1\n","add deductible edge\n","add edge:  ('Q199', 'P38', 'Q1976') num edges:  1\n","add deductible edge\n","add edge:  ('Q1711', 'P4', 'Q1932') num edges:  1\n","add deductible edge\n","add edge:  ('Q187', 'P43', 'Q425') num edges:  1\n","add deductible edge\n","add edge:  ('Q169', 'P44', 'Q1957') num edges:  1\n","add deductible edge\n","add edge:  ('Q169', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q367', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q367', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q367', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q747', 'P18', 'Q1927') num edges:  1\n","add deductible edge\n","add edge:  ('Q60', 'P44', 'Q1957') num edges:  1\n","add child edge\n","add edge:  ('Q1999', 'P24', 'Q89') num edges:  1\n","add edge:  ('Q1999', 'P37', 'Q923') num edges:  1\n","add edge:  ('Q1718', 'P26', 'Q1999') num edges:  1\n","add edge:  ('Q1999', 'P38', 'Q1513') num edges:  1\n","add edge:  ('Q1999', 'P17', 'Q698') num edges:  1\n","add edge:  ('Q1999', 'P38', 'Q144') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P15', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q20', 'P15', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q1060', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q1060', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1060', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q760', 'P21', 'Q563') num edges:  1\n","add deductible edge\n","add edge:  ('Q760', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q760', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q1184', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q1184', 'P15', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q1184', 'P15', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q1235', 'P21', 'Q563') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1572') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P22', 'Q1486') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P19', 'Q256') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1967', 'P19', 'Q747') num edges:  1\n","add deductible edge\n","add edge:  ('Q1948', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1283', 'P20', 'Q272') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q875') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q876') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q663') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q412') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q463') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q1724') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q1889') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q1685') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P22', 'Q1486') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P19', 'Q256') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1966', 'P19', 'Q747') num edges:  1\n","add deductible edge\n","add edge:  ('Q703', 'P21', 'Q661') num edges:  1\n","add deductible edge\n","add edge:  ('Q703', 'P21', 'Q1119') num edges:  1\n","add deductible edge\n","add edge:  ('Q703', 'P21', 'Q1384') num edges:  1\n","add deductible edge\n","add edge:  ('Q1107', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q813', 'P20', 'Q272') num edges:  1\n","add deductible edge\n","add edge:  ('Q1152', 'P44', 'Q176') num edges:  1\n","add deductible edge\n","add edge:  ('Q1152', 'P44', 'Q1728') num edges:  1\n","add deductible edge\n","add edge:  ('Q1146', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q245') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1093') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1094') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1158') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1159') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1260') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1275') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1279') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1335') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1487') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1687') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1688') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1888') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q776') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q778') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q136') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1110') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1307') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1334') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1353') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1354') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1435') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1501') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1679') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1744') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1917') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1918') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q572') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1962') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q521') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q665') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q664') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1879') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q1880') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P22', 'Q830') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q365') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q38') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q691') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q881') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q747') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q839') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q256') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q1633') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q1139') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q1476') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q147') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q836') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q837') num edges:  1\n","add deductible edge\n","add edge:  ('Q1911', 'P19', 'Q1867') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q151', 'P15', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q258', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q258', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q258', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q258', 'P21', 'Q1316') num edges:  1\n","add deductible edge\n","add edge:  ('Q258', 'P21', 'Q1432') num edges:  1\n","add deductible edge\n","add edge:  ('Q758', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P44', 'Q394') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P44', 'Q920') num edges:  1\n","add deductible edge\n","add edge:  ('Q1179', 'P44', 'Q1355') num edges:  1\n","add deductible edge\n","add edge:  ('Q1419', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q751', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q751', 'P15', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q751', 'P15', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q1272', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q649') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q1211') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q259') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q1120') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q1166') num edges:  1\n","add deductible edge\n","add edge:  ('Q1973', 'P45', 'Q1622') num edges:  1\n","add deductible edge\n","add edge:  ('Q663', 'P15', 'Q386') num edges:  1\n","add deductible edge\n","add edge:  ('Q663', 'P15', 'Q1091') num edges:  1\n","add deductible edge\n","add edge:  ('Q663', 'P15', 'Q848') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q993') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1835', 'P21', 'Q740') num edges:  1\n","add deductible edge\n","add edge:  ('Q1145', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q182', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q304') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q205') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1056') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1680') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1808') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q631') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q806') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q853') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q854') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q952') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q413') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q71') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q784') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q785') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q795') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q796') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q852') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1191') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1192') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1483') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1484') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q816') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q181') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1110') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1111') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1584') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1585') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q1609') num edges:  1\n","add deductible edge\n","add edge:  ('Q1999', 'P38', 'Q616') num edges:  1\n","add deductible edge\n","add edge:  ('Q1959', 'P47', 'Q368') num edges:  1\n","add deductible edge\n","add edge:  ('Q1959', 'P47', 'Q377') num edges:  1\n","add deductible edge\n","add edge:  ('Q1959', 'P47', 'Q1770') num edges:  1\n","add deductible edge\n","add edge:  ('Q708', 'P45', 'Q150') num edges:  1\n","add deductible edge\n","add edge:  ('Q472', 'P44', 'Q176') num edges:  1\n","add deductible edge\n","add edge:  ('Q472', 'P44', 'Q1728') num edges:  1\n","add deductible edge\n","add edge:  ('Q1908', 'P22', 'Q354') num edges:  1\n","add deductible edge\n","add edge:  ('Q716', 'P44', 'Q176') num edges:  1\n","add deductible edge\n","add edge:  ('Q716', 'P44', 'Q1728') num edges:  1\n","add deductible edge\n","add edge:  ('Q655', 'P21', 'Q1999') num edges:  1\n","add deductible edge\n","add edge:  ('Q715', 'P44', 'Q176') num edges:  1\n","add deductible edge\n","add edge:  ('Q715', 'P44', 'Q1728') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q342') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q729') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q705') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1212') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1225') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q213') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q659') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q660') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q985') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1220') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q89') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q259') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1120') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q416') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1166') num edges:  1\n","add deductible edge\n","add edge:  ('Q1972', 'P45', 'Q1622') num edges:  1\n","add deductible edge\n","add edge:  ('Q1200', 'P6', 'Q923') num edges:  1\n","num train triples:  10000\n","num id test triples:  1000\n","num uniform test triples:  660\n"]}]},{"cell_type":"markdown","source":["Training data class for synthetic graph:"],"metadata":{"id":"0Usl6GWN8s0g"}},{"cell_type":"code","source":["class TrainDataset(IterableDataset):\n","    \"\"\"\n","    Iterable dataset that returns constant length chunks of tokens from stream of text files.\n","        Args:\n","            tokenizer (Tokenizer): The processor used for proccessing the data.\n","            dataset (dataset.Dataset): Dataset with text files.\n","            infinite (bool): If True the iterator is reset after dataset reaches end else stops.\n","            seq_length (int): Length of token sequences to return.\n","            num_of_sequences (int): Number of token sequences to keep in buffer.\n","            chars_per_token (int): Number of characters per token used to estimate number of tokens in text buffer.\n","            tokenized (bool): If true we use a pretokenized dataset.\n","    \"\"\"\n","\n","    def __init__(\n","        self,\n","        graph, # generated graph\n","        tokenizer,\n","        seq_length=256,\n","        num_of_sequences=1024,\n","        chars_per_token=3.6,\n","        seed=42,\n","    ):\n","        super(TrainDataset, self).__init__()\n","\n","        self.tokenizer = tokenizer\n","        self.seq_length = seq_length\n","        self.epoch = 0\n","        self.current_size = 0\n","        self.num_buffer_sequences = num_of_sequences\n","        self.max_buffer_size = seq_length * chars_per_token * num_of_sequences\n","        self.seed = seed\n","        self.data = graph\n","\n","        print(\"max buffer size: \", self.max_buffer_size)\n","\n","    def set_epoch(self, worker_id):\n","        set_seed(self.seed + self.epoch + worker_id) # int(time.time())\n","\n","    def triple2str(self, triple):\n","        if type(triple[0]) == int or type(triple[1]) == int or type(triple[2]) == int:\n","            return f'Q{triple[0]} P{triple[1]} Q{triple[2]}'\n","        else:\n","            return ' '.join(list(triple))\n","\n","    def iter_fun(self, worker_id=0):\n","        num_sents = len(self.data.triples)\n","        while True:\n","            i = random.randint(0, num_sents-1)\n","            triple = self.data.triples[i]\n","            text = self.triple2str(triple) + '\\n'\n","            if text is None:\n","                print(\"cannot translate \", triple, \" into text.\")\n","                continue\n","            yield text\n","\n","    def __len__(self):\n","        return len(self.data.triples)\n","\n","    def __iter__(self):\n","        more_examples = True\n","        try:\n","            worker_info = get_worker_info()\n","            print(worker_info)\n","            worker_id = worker_info.id\n","        except:\n","            worker_id = 0\n","        self.set_epoch(worker_id)\n","        iterator = self.iter_fun(worker_id=worker_id)\n","        print(\"worker id: \", )\n","\n","        while more_examples:\n","            buffer, buffer_len = [], 0\n","            while True:\n","                if buffer_len >= self.max_buffer_size:\n","                    print(\"data buffer full\")\n","                    break\n","                try:\n","                    buffer.append(next(iterator))\n","                    buffer_len += len(buffer[-1])\n","                except StopIteration:\n","                    self.epoch += 1\n","                    self.set_epoch(worker_id)\n","                    iterator = self.iter_fun()\n","                    print(f\"Dataset epoch: {self.epoch}\")\n","            # print(buffer[:3])\n","\n","            input_lens = []\n","            random.shuffle(buffer)\n","            tokenized_inputs = self.tokenizer(buffer,\n","                                padding=False,\n","                                max_length=self.seq_length,\n","                                truncation=True)[\"input_ids\"]\n","            for tokenized_input in tokenized_inputs:\n","                input_ids = tokenized_input + [self.tokenizer.eos_token_id]\n","                input_lens.append(len(input_ids))\n","                self.current_size += 1\n","                yield dict(input_ids=torch.tensor(input_ids), labels=torch.tensor(input_ids))\n","            print(\"average example length: \", np.mean(input_lens))"],"metadata":{"id":"iAKmfbSrR5in","executionInfo":{"status":"ok","timestamp":1751815284702,"user_tz":-480,"elapsed":6,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["train_dataset = TrainDataset(\n","        graph,\n","        tokenizer=None,\n","        seq_length=128,\n","        num_of_sequences=1024,\n","        chars_per_token=3.6,\n","        )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"B4sdu4gs_Zyq","executionInfo":{"status":"ok","timestamp":1751815284717,"user_tz":-480,"elapsed":8,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}},"outputId":"e36eb113-b35c-49f7-ba4b-e1476a37450c"},"execution_count":7,"outputs":[{"output_type":"stream","name":"stdout","text":["max buffer size:  471859.2\n"]}]},{"cell_type":"markdown","source":["Tokenizer class:"],"metadata":{"id":"aY8D6o8N8vlQ"}},{"cell_type":"code","source":["class BaseTokenizer:\n","    def __init__(self, n=1, vocab=None, padding_side='right', add_special_tokens=False):\n","        self.n = n\n","        if vocab is None:\n","            self.vocab = self.build_vocab()\n","        else:\n","            self.vocab = vocab\n","        self.rev_vocab = {v: k for k, v in self.vocab.items()}\n","        self.padding_side = padding_side\n","        self.add_special_tokens = add_special_tokens\n","        self.bos_token = '<BOS>'\n","        self.bos_token_id = self.vocab['<BOS>']\n","        self.eos_token = '<EOS>'\n","        self.eos_token_id = self.vocab['<EOS>']\n","        self.pad_token = '<PAD>'\n","        self.pad_token_id = self.vocab['<PAD>']\n","        self.unk_token = '<UNK>'\n","        self.unk_token_id = self.vocab['<UNK>']\n","        self.all_special_ids = [self.bos_token_id, self.eos_token_id,\n","                                self.pad_token_id, self.unk_token_id]\n","        self.all_special_tokens = self.all_special_tokens_extended = [\n","            self.bos_token, self.eos_token,\n","            self.pad_token, self.unk_token]\n","\n","    def build_vocab(self):\n","        pass\n","\n","    def tokenize(self, text: str, max_length: int):\n","        pass\n","\n","    def encode(self, text, padding=False, max_length=1024, return_tensors=None, truncation=True):\n","        if type(text) == str:\n","            ids = [self.tokenize(text, max_length)]\n","        else:\n","            ids = []\n","            lens = []\n","            for t in text:\n","                _ids = self.tokenize(t, max_length)\n","                ids.append(_ids)\n","                lens.append(len(_ids))\n","\n","            if padding:\n","                max_length = max(lens)\n","                for _ids in ids:\n","                    if len(_ids) < max_length:\n","                        if self.padding_side == 'left':\n","                            _ids = [self.pad_token_id] * (max_length - len(_ids)) + _ids\n","                        elif self.padding_side == 'right':\n","                            _ids += [self.pad_token_id] * (max_length - len(_ids))\n","                        else:\n","                            raise NotImplementedError\n","\n","        if return_tensors == 'pt':\n","            ids = torch.tensor(ids)\n","\n","        return ids\n","\n","    def __call__(self, text, padding=False, max_length=1024, return_tensors=None, truncation=True, device='cpu'):\n","        if type(text) == str:\n","            ids = [self.tokenize(text, max_length)]\n","            attns = [[1] * len(ids[0])]\n","        else:\n","            ids = []\n","            attns = []\n","            lens = []\n","            for t in text:\n","                _ids = self.tokenize(t, max_length)\n","                ids.append(_ids)\n","                lens.append(len(_ids))\n","                attns.append([1] * len(_ids))\n","\n","            if padding:\n","                max_length = max(lens)\n","                padded_ids = []\n","                padded_attns = []\n","                for _ids, attn in zip(ids, attns):\n","                    num_pad = max_length - len(_ids)\n","                    if self.padding_side == 'left':\n","                        padded_ids.append([self.pad_token_id] * num_pad + _ids)\n","                        padded_attns.append([0] * num_pad + attn)\n","                    elif self.padding_side == 'right':\n","                        padded_ids.append(_ids + [self.pad_token_id] * num_pad)\n","                        padded_attns.append(attn + [0] * num_pad)\n","                    else:\n","                        raise NotImplementedError\n","                ids = padded_ids\n","                attns = padded_attns\n","\n","        if return_tensors == 'pt':\n","            ids = torch.tensor(ids).to(device)\n","            attns = torch.tensor(attns).to(device)\n","\n","        return {\"input_ids\": ids, 'attention_mask': attns}\n","\n","    def __len__(self):\n","        return len(self.vocab)\n","\n","    def decode(self, token_ids, skip_special_tokens=False):\n","        if type(token_ids) == int:\n","            return self.rev_vocab[token_ids]\n","        else:\n","            out = ''\n","            for i in token_ids:\n","                if i == self.eos_token_id:\n","                    if not skip_special_tokens:\n","                        out += self.eos_token\n","                    break\n","                if skip_special_tokens and i in self.all_special_ids:\n","                    continue\n","                out += self.rev_vocab[i]\n","            return out\n","\n","    def batch_decode(self, sequences, skip_special_tokens=False):\n","        out = []\n","        for token_ids in sequences:\n","            out.append(self.decode(token_ids, skip_special_tokens))\n","        return out\n","\n","    def save_pretrained(self, output_dir):\n","        with open(f'{output_dir}/tokenizer.json', 'w') as wf:\n","            json.dump(self.vocab, wf, indent = 4)\n","\n","    @classmethod\n","    def from_pretrained(cls, pretrained_model_name_or_path, padding_side='right', trust_remote_code=False, revision=None):\n","        vocab_path = f\"{pretrained_model_name_or_path}/tokenizer.json\"\n","        if os.path.exists(vocab_path):\n","            vocab = json.load(open(vocab_path))\n","            n = 1\n","            for token in vocab:\n","                if token not in ['<BOS>', '<EOS>', '<PAD>', '<UNK>']:\n","                    if '_' in token:\n","                        n = max(n, int(token.split('_')[1]) + 1)\n","                    else:\n","                        n = max(n, len(token))\n","\n","            return cls(n, vocab, padding_side=padding_side)\n","        else:\n","            return cls(padding_side=padding_side)\n","\n","class CharTokenizer(BaseTokenizer):\n","    def __init__(self, n=1, vocab=None, padding_side='right', add_special_tokens=False):\n","        super().__init__(n, vocab, padding_side, add_special_tokens)\n","\n","    def build_vocab(self):\n","        vocab = {'Q':0, 'P':1}\n","        for i in range(10):\n","            vocab[str(i)] = i+2\n","        vocab_size = 12\n","        vocab['\\n'] = vocab_size\n","        vocab_size += 1\n","        vocab[' '] = vocab_size\n","        vocab_size += 1\n","        vocab['-'] = vocab_size\n","        vocab_size += 1\n","        vocab['?'] = vocab_size\n","        vocab_size += 1\n","        vocab['<BOS>'] = vocab_size\n","        vocab_size += 1\n","        vocab['<EOS>'] = vocab_size\n","        vocab_size += 1\n","        vocab['<PAD>'] = vocab_size\n","        vocab_size += 1\n","        vocab['<UNK>'] = vocab_size\n","\n","        return vocab\n","\n","    def tokenize(self, text: str, max_length: int):\n","        ids = []\n","        for l in text.split('\\n'):\n","            if len(l) == 0:\n","                continue\n","            for w in l.split():\n","                for c in w.strip():\n","                    if c not in self.vocab:\n","                        ids.append(self.unk_token_id)\n","                    else:\n","                        ids.append(self.vocab[c])\n","                ids.append(self.vocab[' '])\n","            ids.append(self.vocab['\\n'])\n","\n","        if self.add_special_tokens:\n","            ids.append(self.vocab['<EOS>'])\n","        else:\n","            ids = ids[:-2]\n","        # print(ids)\n","        if max_length < len(ids):\n","            return ids[:max_length]\n","        else:\n","            return ids"],"metadata":{"id":"JWZC4rdF8oGZ","executionInfo":{"status":"ok","timestamp":1751815284764,"user_tz":-480,"elapsed":46,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"execution_count":8,"outputs":[]},{"cell_type":"markdown","source":["Helper functions for training and evaluation:"],"metadata":{"id":"Sdn-qc9783PF"}},{"cell_type":"code","source":["IGNORE_INDEX = -100\n","DEFAULT_PAD_TOKEN = \"[PAD]\"\n","DEFAULT_EOS_TOKEN = \"</s>\"\n","DEFAULT_BOS_TOKEN = \"</s>\"\n","DEFAULT_UNK_TOKEN = \"<unk>\"\n","\n","def model_path_map(model_name):\n","    return '../llms/' + model_name\n","\n","def count_params(model):\n","    params: int = sum(p.numel() for p in model.parameters() if p.requires_grad)\n","    return params\n","\n","def compute_llama_param(l, h, v):\n","    d = 64 * h\n","    embd = d * v\n","    atten = 4*d*d\n","    mlp = 2*d*d*3\n","    ln = d\n","    return l * (atten + mlp + 2*ln) + ln + 2*embd\n","\n","@dataclass\n","class DataCollatorForSupervisedDataset(object):\n","    \"\"\"Collate examples for supervised fine-tuning.\"\"\"\n","\n","    tokenizer: transformers.PreTrainedTokenizer\n","\n","    def __call__(self, instances: Sequence[Dict]) -> Dict[str, torch.Tensor]:\n","        input_ids, labels = tuple([instance[key] for instance in instances]\n","                                  for key in (\"input_ids\", \"labels\"))\n","        input_ids = torch.nn.utils.rnn.pad_sequence(\n","            input_ids, batch_first=True, padding_value=self.tokenizer.pad_token_id\n","        )\n","        labels = torch.nn.utils.rnn.pad_sequence(labels, batch_first=True,\n","                                                 padding_value=IGNORE_INDEX)\n","\n","        attn_mask = input_ids.ne(self.tokenizer.pad_token_id)\n","\n","        # print(\"input_ids: \", input_ids)\n","        # print(\"labels: \", labels)\n","        # print(\"atten mask: \", attn_mask)\n","\n","        return dict(\n","            input_ids=input_ids,\n","            labels=labels,\n","            attention_mask=attn_mask,\n","        )\n","\n","\n","def _tokenize_fn(strings: Sequence[str], tokenizer: transformers.PreTrainedTokenizer, max_length: int) -> Dict:\n","    \"\"\"Tokenize a list of strings.\"\"\"\n","    tokenized_list = [\n","        tokenizer(\n","            text,\n","            return_tensors=\"pt\",\n","            padding=\"longest\",\n","            max_length=max_length,\n","            truncation=True,\n","            # pad_to_multiple_of=8,\n","        )[\"input_ids\"]\n","        for text in strings\n","    ]\n","    input_ids = labels = [tokenized[0] for tokenized in tokenized_list]\n","    input_ids_lens = labels_lens = [\n","        tokenized.ne(tokenizer.pad_token_id).sum().item() for tokenized in tokenized_list\n","    ]\n","    return dict(\n","        input_ids=input_ids,\n","        labels=labels,\n","        input_ids_lens=input_ids_lens,\n","        labels_lens=labels_lens,\n","    )\n","\n","\n","def prepare_data(\n","    sources: Sequence[str],\n","    targets: Sequence[str],\n","    tokenizer: transformers.PreTrainedTokenizer,\n","    max_length: int\n",") -> Dict:\n","    \"\"\"Preprocess the data by tokenizing.\"\"\"\n","    examples = [s + t for s, t in zip(sources, targets)]\n","    examples_tokenized, sources_tokenized = [_tokenize_fn(strings, tokenizer, max_length)\n","                                             for strings in (examples, sources)]\n","    eos = torch.tensor([tokenizer.eos_token_id])\n","    input_ids = [torch.cat((ids, eos)) for ids in examples_tokenized[\"input_ids\"]]\n","    labels = copy.deepcopy(input_ids)\n","    for label, source_len in zip(labels, sources_tokenized[\"input_ids_lens\"]):\n","        label[:source_len] = IGNORE_INDEX\n","    return dict(input_ids=input_ids, labels=labels)"],"metadata":{"id":"5j7oSdDU-mdE","executionInfo":{"status":"ok","timestamp":1751815284797,"user_tz":-480,"elapsed":22,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"execution_count":9,"outputs":[]},{"cell_type":"markdown","source":["Training function (set bf16 to True if you have GPUs):"],"metadata":{"id":"_4SzSxLe8_Dh"}},{"cell_type":"code","source":["def train(train_dataset, model_name_or_path='llama-2-2', random_initialize=True,\n","          output_dir='.', bf16=False):\n","\n","    set_seed(42) # make sure use the same model initialization\n","    l, h, v = None, None, None\n","\n","    if random_initialize:\n","        print(\"Random initializing...\")\n","        model_name, l, h = model_name_or_path.split('-')\n","        l, h = int(l), int(h)\n","        d = 64 * h\n","        if model_name == 'llama':\n","            config = transformers.LlamaConfig(hidden_size=d,\n","                                            intermediate_size=2*d,\n","                                            num_attention_heads=h,\n","                                            num_hidden_layers=l)\n","        else:\n","            raise NotImplemented\n","\n","\n","        tokenizer = CharTokenizer()\n","        config.vocab_size = len(tokenizer.vocab)\n","        config.bos_token_id = tokenizer.bos_token_id\n","        config.eos_token_id = tokenizer.eos_token_id\n","        print(\"vocab size: \", len(tokenizer.vocab))\n","        print(\"new config: \", config)\n","\n","        v = config.vocab_size\n","        model = transformers.AutoModelForCausalLM.from_config(config, torch_dtype=torch.bfloat16)\n","        print(\"embedding size: \", model.get_input_embeddings().weight.data.shape)\n","    else:\n","        print(\"Using pre-trained model weights...\")\n","\n","        tokenizer = CharTokenizer.from_pretrained(model_name_or_path)\n","\n","        model = transformers.AutoModelForCausalLM.from_pretrained(\n","            model_name_or_path\n","        )\n","\n","    if l is not None and h is not None and v is not None:\n","        print(\"theoretical # params: \", compute_llama_param(l, h, v))\n","    print(\"actual # params: \", count_params(model))\n","\n","    train_dataset.tokenizer = tokenizer\n","\n","    data_collator = DataCollatorForSupervisedDataset(tokenizer=tokenizer)\n","\n","    train_args = TrainingArguments(bf16=bf16, max_steps=1000,\n","                      per_device_train_batch_size=32, eval_strategy=\"no\",\n","                      save_steps=1000, save_total_limit=1, learning_rate=1e-4,\n","                      weight_decay=0.0, warmup_ratio=0.2, lr_scheduler_type=\"cosine\",\n","                      logging_steps=1, output_dir=output_dir, report_to=\"none\")\n","\n","    trainer = Trainer(model=model, tokenizer=tokenizer, args=train_args,\n","                    train_dataset=train_dataset, data_collator=data_collator,\n","                    eval_dataset=None)\n","\n","    if not random_initialize:\n","        print(\"resume training from: \", model_name_or_path)\n","        trainer.train(model_name_or_path)\n","    else:\n","        trainer.train()\n","    trainer.save_state()\n","    trainer.save_model(output_dir=output_dir)\n","    return model, tokenizer"],"metadata":{"id":"2PaLLB1bR5si","executionInfo":{"status":"ok","timestamp":1751815284880,"user_tz":-480,"elapsed":82,"user":{"displayName":"Xinyi Wang","userId":"00375459372959943015"}}},"execution_count":10,"outputs":[]},{"cell_type":"markdown","source":["Train a 2-layer language model on the generated synthetic graph:"],"metadata":{"id":"8NWaGVfcH0uu"}},{"cell_type":"code","source":["model, tokenizer = train(train_dataset)"],"metadata":{"collapsed":true,"id":"HJjCPy8zBts8","colab":{"base_uri":"https://localhost:8080/","height":1000},"outputId":"7eb080e0-5998-4976-9ea9-d01c5e815b87"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Random initializing...\n","vocab size:  20\n","new config:  LlamaConfig {\n","  \"attention_bias\": false,\n","  \"attention_dropout\": 0.0,\n","  \"bos_token_id\": 16,\n","  \"eos_token_id\": 17,\n","  \"head_dim\": 64,\n","  \"hidden_act\": \"silu\",\n","  \"hidden_size\": 128,\n","  \"initializer_range\": 0.02,\n","  \"intermediate_size\": 256,\n","  \"max_position_embeddings\": 2048,\n","  \"mlp_bias\": false,\n","  \"model_type\": \"llama\",\n","  \"num_attention_heads\": 2,\n","  \"num_hidden_layers\": 2,\n","  \"num_key_value_heads\": 2,\n","  \"pretraining_tp\": 1,\n","  \"rms_norm_eps\": 1e-06,\n","  \"rope_scaling\": null,\n","  \"rope_theta\": 10000.0,\n","  \"tie_word_embeddings\": false,\n","  \"transformers_version\": \"4.53.0\",\n","  \"use_cache\": true,\n","  \"vocab_size\": 20\n","}\n","\n","embedding size:  torch.Size([20, 128])\n","theoretical # params:  333440\n","actual # params:  333440\n"]},{"output_type":"stream","name":"stderr","text":["/tmp/ipython-input-10-3263160234.py:54: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `Trainer.__init__`. Use `processing_class` instead.\n","  trainer = Trainer(model=model, tokenizer=tokenizer, args=train_args,\n"]},{"output_type":"stream","name":"stdout","text":["None\n","worker id: \n","data buffer full\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.HTML object>"],"text/html":["\n","    <div>\n","      \n","      <progress value='344' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n","      [ 344/1000 03:46 < 07:15, 1.51 it/s, Epoch 1.10/4]\n","    </div>\n","    <table border=\"1\" class=\"dataframe\">\n","  <thead>\n"," <tr style=\"text-align: left;\">\n","      <th>Step</th>\n","      <th>Training Loss</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <td>1</td>\n","      <td>2.836500</td>\n","    </tr>\n","    <tr>\n","      <td>2</td>\n","      <td>2.826400</td>\n","    </tr>\n","    <tr>\n","      <td>3</td>\n","      <td>2.829700</td>\n","    </tr>\n","    <tr>\n","      <td>4</td>\n","      <td>2.825400</td>\n","    </tr>\n","    <tr>\n","      <td>5</td>\n","      <td>2.838200</td>\n","    </tr>\n","    <tr>\n","      <td>6</td>\n","      <td>2.820100</td>\n","    </tr>\n","    <tr>\n","      <td>7</td>\n","      <td>2.816500</td>\n","    </tr>\n","    <tr>\n","      <td>8</td>\n","      <td>2.830600</td>\n","    </tr>\n","    <tr>\n","      <td>9</td>\n","      <td>2.830000</td>\n","    </tr>\n","    <tr>\n","      <td>10</td>\n","      <td>2.840600</td>\n","    </tr>\n","    <tr>\n","      <td>11</td>\n","      <td>2.831600</td>\n","    </tr>\n","    <tr>\n","      <td>12</td>\n","      <td>2.824400</td>\n","    </tr>\n","    <tr>\n","      <td>13</td>\n","      <td>2.828100</td>\n","    </tr>\n","    <tr>\n","      <td>14</td>\n","      <td>2.834000</td>\n","    </tr>\n","    <tr>\n","      <td>15</td>\n","      <td>2.813300</td>\n","    </tr>\n","    <tr>\n","      <td>16</td>\n","      <td>2.834300</td>\n","    </tr>\n","    <tr>\n","      <td>17</td>\n","      <td>2.837400</td>\n","    </tr>\n","    <tr>\n","      <td>18</td>\n","      <td>2.827100</td>\n","    </tr>\n","    <tr>\n","      <td>19</td>\n","      <td>2.827300</td>\n","    </tr>\n","    <tr>\n","      <td>20</td>\n","      <td>2.822400</td>\n","    </tr>\n","    <tr>\n","      <td>21</td>\n","      <td>2.811300</td>\n","    </tr>\n","    <tr>\n","      <td>22</td>\n","      <td>2.821900</td>\n","    </tr>\n","    <tr>\n","      <td>23</td>\n","      <td>2.811300</td>\n","    </tr>\n","    <tr>\n","      <td>24</td>\n","      <td>2.823000</td>\n","    </tr>\n","    <tr>\n","      <td>25</td>\n","      <td>2.813100</td>\n","    </tr>\n","    <tr>\n","      <td>26</td>\n","      <td>2.816900</td>\n","    </tr>\n","    <tr>\n","      <td>27</td>\n","      <td>2.816700</td>\n","    </tr>\n","    <tr>\n","      <td>28</td>\n","      <td>2.808200</td>\n","    </tr>\n","    <tr>\n","      <td>29</td>\n","      <td>2.804900</td>\n","    </tr>\n","    <tr>\n","      <td>30</td>\n","      <td>2.808900</td>\n","    </tr>\n","    <tr>\n","      <td>31</td>\n","      <td>2.827200</td>\n","    </tr>\n","    <tr>\n","      <td>32</td>\n","      <td>2.802400</td>\n","    </tr>\n","    <tr>\n","      <td>33</td>\n","      <td>2.797900</td>\n","    </tr>\n","    <tr>\n","      <td>34</td>\n","      <td>2.810200</td>\n","    </tr>\n","    <tr>\n","      <td>35</td>\n","      <td>2.793300</td>\n","    </tr>\n","    <tr>\n","      <td>36</td>\n","      <td>2.788600</td>\n","    </tr>\n","    <tr>\n","      <td>37</td>\n","      <td>2.793900</td>\n","    </tr>\n","    <tr>\n","      <td>38</td>\n","      <td>2.775100</td>\n","    </tr>\n","    <tr>\n","      <td>39</td>\n","      <td>2.793400</td>\n","    </tr>\n","    <tr>\n","      <td>40</td>\n","      <td>2.780700</td>\n","    </tr>\n","    <tr>\n","      <td>41</td>\n","      <td>2.784900</td>\n","    </tr>\n","    <tr>\n","      <td>42</td>\n","      <td>2.773300</td>\n","    </tr>\n","    <tr>\n","      <td>43</td>\n","      <td>2.777000</td>\n","    </tr>\n","    <tr>\n","      <td>44</td>\n","      <td>2.762100</td>\n","    </tr>\n","    <tr>\n","      <td>45</td>\n","      <td>2.753600</td>\n","    </tr>\n","    <tr>\n","      <td>46</td>\n","      <td>2.746100</td>\n","    </tr>\n","    <tr>\n","      <td>47</td>\n","      <td>2.734100</td>\n","    </tr>\n","    <tr>\n","      <td>48</td>\n","      <td>2.742400</td>\n","    </tr>\n","    <tr>\n","      <td>49</td>\n","      <td>2.748300</td>\n","    </tr>\n","    <tr>\n","      <td>50</td>\n","      <td>2.733800</td>\n","    </tr>\n","    <tr>\n","      <td>51</td>\n","      <td>2.727200</td>\n","    </tr>\n","    <tr>\n","      <td>52</td>\n","      <td>2.717200</td>\n","    </tr>\n","    <tr>\n","      <td>53</td>\n","      <td>2.712900</td>\n","    </tr>\n","    <tr>\n","      <td>54</td>\n","      <td>2.718900</td>\n","    </tr>\n","    <tr>\n","      <td>55</td>\n","      <td>2.714100</td>\n","    </tr>\n","    <tr>\n","      <td>56</td>\n","      <td>2.704200</td>\n","    </tr>\n","    <tr>\n","      <td>57</td>\n","      <td>2.682900</td>\n","    </tr>\n","    <tr>\n","      <td>58</td>\n","      <td>2.691800</td>\n","    </tr>\n","    <tr>\n","      <td>59</td>\n","      <td>2.688900</td>\n","    </tr>\n","    <tr>\n","      <td>60</td>\n","      <td>2.683000</td>\n","    </tr>\n","    <tr>\n","      <td>61</td>\n","      <td>2.666000</td>\n","    </tr>\n","    <tr>\n","      <td>62</td>\n","      <td>2.672000</td>\n","    </tr>\n","    <tr>\n","      <td>63</td>\n","      <td>2.657900</td>\n","    </tr>\n","    <tr>\n","      <td>64</td>\n","      <td>2.654100</td>\n","    </tr>\n","    <tr>\n","      <td>65</td>\n","      <td>2.637700</td>\n","    </tr>\n","    <tr>\n","      <td>66</td>\n","      <td>2.627200</td>\n","    </tr>\n","    <tr>\n","      <td>67</td>\n","      <td>2.621200</td>\n","    </tr>\n","    <tr>\n","      <td>68</td>\n","      <td>2.600700</td>\n","    </tr>\n","    <tr>\n","      <td>69</td>\n","      <td>2.582500</td>\n","    </tr>\n","    <tr>\n","      <td>70</td>\n","      <td>2.586700</td>\n","    </tr>\n","    <tr>\n","      <td>71</td>\n","      <td>2.584000</td>\n","    </tr>\n","    <tr>\n","      <td>72</td>\n","      <td>2.582000</td>\n","    </tr>\n","    <tr>\n","      <td>73</td>\n","      <td>2.561200</td>\n","    </tr>\n","    <tr>\n","      <td>74</td>\n","      <td>2.560000</td>\n","    </tr>\n","    <tr>\n","      <td>75</td>\n","      <td>2.551600</td>\n","    </tr>\n","    <tr>\n","      <td>76</td>\n","      <td>2.529400</td>\n","    </tr>\n","    <tr>\n","      <td>77</td>\n","      <td>2.525400</td>\n","    </tr>\n","    <tr>\n","      <td>78</td>\n","      <td>2.521700</td>\n","    </tr>\n","    <tr>\n","      <td>79</td>\n","      <td>2.495600</td>\n","    </tr>\n","    <tr>\n","      <td>80</td>\n","      <td>2.504500</td>\n","    </tr>\n","    <tr>\n","      <td>81</td>\n","      <td>2.490100</td>\n","    </tr>\n","    <tr>\n","      <td>82</td>\n","      <td>2.485100</td>\n","    </tr>\n","    <tr>\n","      <td>83</td>\n","      <td>2.456600</td>\n","    </tr>\n","    <tr>\n","      <td>84</td>\n","      <td>2.465300</td>\n","    </tr>\n","    <tr>\n","      <td>85</td>\n","      <td>2.440200</td>\n","    </tr>\n","    <tr>\n","      <td>86</td>\n","      <td>2.431400</td>\n","    </tr>\n","    <tr>\n","      <td>87</td>\n","      <td>2.418400</td>\n","    </tr>\n","    <tr>\n","      <td>88</td>\n","      <td>2.401300</td>\n","    </tr>\n","    <tr>\n","      <td>89</td>\n","      <td>2.398600</td>\n","    </tr>\n","    <tr>\n","      <td>90</td>\n","      <td>2.389600</td>\n","    </tr>\n","    <tr>\n","      <td>91</td>\n","      <td>2.389300</td>\n","    </tr>\n","    <tr>\n","      <td>92</td>\n","      <td>2.352600</td>\n","    </tr>\n","    <tr>\n","      <td>93</td>\n","      <td>2.368000</td>\n","    </tr>\n","    <tr>\n","      <td>94</td>\n","      <td>2.318600</td>\n","    </tr>\n","    <tr>\n","      <td>95</td>\n","      <td>2.346400</td>\n","    </tr>\n","    <tr>\n","      <td>96</td>\n","      <td>2.328100</td>\n","    </tr>\n","    <tr>\n","      <td>97</td>\n","      <td>2.291300</td>\n","    </tr>\n","    <tr>\n","      <td>98</td>\n","      <td>2.272200</td>\n","    </tr>\n","    <tr>\n","      <td>99</td>\n","      <td>2.255900</td>\n","    </tr>\n","    <tr>\n","      <td>100</td>\n","      <td>2.262200</td>\n","    </tr>\n","    <tr>\n","      <td>101</td>\n","      <td>2.233800</td>\n","    </tr>\n","    <tr>\n","      <td>102</td>\n","      <td>2.238000</td>\n","    </tr>\n","    <tr>\n","      <td>103</td>\n","      <td>2.202800</td>\n","    </tr>\n","    <tr>\n","      <td>104</td>\n","      <td>2.201400</td>\n","    </tr>\n","    <tr>\n","      <td>105</td>\n","      <td>2.177600</td>\n","    </tr>\n","    <tr>\n","      <td>106</td>\n","      <td>2.166500</td>\n","    </tr>\n","    <tr>\n","      <td>107</td>\n","      <td>2.181200</td>\n","    </tr>\n","    <tr>\n","      <td>108</td>\n","      <td>2.164600</td>\n","    </tr>\n","    <tr>\n","      <td>109</td>\n","      <td>2.181800</td>\n","    </tr>\n","    <tr>\n","      <td>110</td>\n","      <td>2.151200</td>\n","    </tr>\n","    <tr>\n","      <td>111</td>\n","      <td>2.143200</td>\n","    </tr>\n","    <tr>\n","      <td>112</td>\n","      <td>2.090300</td>\n","    </tr>\n","    <tr>\n","      <td>113</td>\n","      <td>2.089600</td>\n","    </tr>\n","    <tr>\n","      <td>114</td>\n","      <td>2.088700</td>\n","    </tr>\n","    <tr>\n","      <td>115</td>\n","      <td>2.111900</td>\n","    </tr>\n","    <tr>\n","      <td>116</td>\n","      <td>2.084800</td>\n","    </tr>\n","    <tr>\n","      <td>117</td>\n","      <td>2.030500</td>\n","    </tr>\n","    <tr>\n","      <td>118</td>\n","      <td>2.044800</td>\n","    </tr>\n","    <tr>\n","      <td>119</td>\n","      <td>2.056600</td>\n","    </tr>\n","    <tr>\n","      <td>120</td>\n","      <td>2.040500</td>\n","    </tr>\n","    <tr>\n","      <td>121</td>\n","      <td>2.029200</td>\n","    </tr>\n","    <tr>\n","      <td>122</td>\n","      <td>2.005900</td>\n","    </tr>\n","    <tr>\n","      <td>123</td>\n","      <td>1.997000</td>\n","    </tr>\n","    <tr>\n","      <td>124</td>\n","      <td>2.006600</td>\n","    </tr>\n","    <tr>\n","      <td>125</td>\n","      <td>1.965500</td>\n","    </tr>\n","    <tr>\n","      <td>126</td>\n","      <td>1.983800</td>\n","    </tr>\n","    <tr>\n","      <td>127</td>\n","      <td>1.972100</td>\n","    </tr>\n","    <tr>\n","      <td>128</td>\n","      <td>1.956700</td>\n","    </tr>\n","    <tr>\n","      <td>129</td>\n","      <td>1.926100</td>\n","    </tr>\n","    <tr>\n","      <td>130</td>\n","      <td>1.946900</td>\n","    </tr>\n","    <tr>\n","      <td>131</td>\n","      <td>1.911200</td>\n","    </tr>\n","    <tr>\n","      <td>132</td>\n","      <td>1.930700</td>\n","    </tr>\n","    <tr>\n","      <td>133</td>\n","      <td>1.904500</td>\n","    </tr>\n","    <tr>\n","      <td>134</td>\n","      <td>1.923200</td>\n","    </tr>\n","    <tr>\n","      <td>135</td>\n","      <td>1.868700</td>\n","    </tr>\n","    <tr>\n","      <td>136</td>\n","      <td>1.915400</td>\n","    </tr>\n","    <tr>\n","      <td>137</td>\n","      <td>1.860800</td>\n","    </tr>\n","    <tr>\n","      <td>138</td>\n","      <td>1.848500</td>\n","    </tr>\n","    <tr>\n","      <td>139</td>\n","      <td>1.883100</td>\n","    </tr>\n","    <tr>\n","      <td>140</td>\n","      <td>1.867700</td>\n","    </tr>\n","    <tr>\n","      <td>141</td>\n","      <td>1.823600</td>\n","    </tr>\n","    <tr>\n","      <td>142</td>\n","      <td>1.855000</td>\n","    </tr>\n","    <tr>\n","      <td>143</td>\n","      <td>1.813500</td>\n","    </tr>\n","    <tr>\n","      <td>144</td>\n","      <td>1.816300</td>\n","    </tr>\n","    <tr>\n","      <td>145</td>\n","      <td>1.821900</td>\n","    </tr>\n","    <tr>\n","      <td>146</td>\n","      <td>1.813000</td>\n","    </tr>\n","    <tr>\n","      <td>147</td>\n","      <td>1.811700</td>\n","    </tr>\n","    <tr>\n","      <td>148</td>\n","      <td>1.794800</td>\n","    </tr>\n","    <tr>\n","      <td>149</td>\n","      <td>1.769500</td>\n","    </tr>\n","    <tr>\n","      <td>150</td>\n","      <td>1.808400</td>\n","    </tr>\n","    <tr>\n","      <td>151</td>\n","      <td>1.786000</td>\n","    </tr>\n","    <tr>\n","      <td>152</td>\n","      <td>1.797900</td>\n","    </tr>\n","    <tr>\n","      <td>153</td>\n","      <td>1.792000</td>\n","    </tr>\n","    <tr>\n","      <td>154</td>\n","      <td>1.768500</td>\n","    </tr>\n","    <tr>\n","      <td>155</td>\n","      <td>1.772900</td>\n","    </tr>\n","    <tr>\n","      <td>156</td>\n","      <td>1.790700</td>\n","    </tr>\n","    <tr>\n","      <td>157</td>\n","      <td>1.754800</td>\n","    </tr>\n","    <tr>\n","      <td>158</td>\n","      <td>1.763100</td>\n","    </tr>\n","    <tr>\n","      <td>159</td>\n","      <td>1.765600</td>\n","    </tr>\n","    <tr>\n","      <td>160</td>\n","      <td>1.756100</td>\n","    </tr>\n","    <tr>\n","      <td>161</td>\n","      <td>1.744600</td>\n","    </tr>\n","    <tr>\n","      <td>162</td>\n","      <td>1.722500</td>\n","    </tr>\n","    <tr>\n","      <td>163</td>\n","      <td>1.735300</td>\n","    </tr>\n","    <tr>\n","      <td>164</td>\n","      <td>1.740400</td>\n","    </tr>\n","    <tr>\n","      <td>165</td>\n","      <td>1.722400</td>\n","    </tr>\n","    <tr>\n","      <td>166</td>\n","      <td>1.712700</td>\n","    </tr>\n","    <tr>\n","      <td>167</td>\n","      <td>1.709000</td>\n","    </tr>\n","    <tr>\n","      <td>168</td>\n","      <td>1.721400</td>\n","    </tr>\n","    <tr>\n","      <td>169</td>\n","      <td>1.722500</td>\n","    </tr>\n","    <tr>\n","      <td>170</td>\n","      <td>1.701200</td>\n","    </tr>\n","    <tr>\n","      <td>171</td>\n","      <td>1.715200</td>\n","    </tr>\n","    <tr>\n","      <td>172</td>\n","      <td>1.703500</td>\n","    </tr>\n","    <tr>\n","      <td>173</td>\n","      <td>1.696500</td>\n","    </tr>\n","    <tr>\n","      <td>174</td>\n","      <td>1.699600</td>\n","    </tr>\n","    <tr>\n","      <td>175</td>\n","      <td>1.677800</td>\n","    </tr>\n","    <tr>\n","      <td>176</td>\n","      <td>1.672300</td>\n","    </tr>\n","    <tr>\n","      <td>177</td>\n","      <td>1.713200</td>\n","    </tr>\n","    <tr>\n","      <td>178</td>\n","      <td>1.702000</td>\n","    </tr>\n","    <tr>\n","      <td>179</td>\n","      <td>1.695500</td>\n","    </tr>\n","    <tr>\n","      <td>180</td>\n","      <td>1.701700</td>\n","    </tr>\n","    <tr>\n","      <td>181</td>\n","      <td>1.688700</td>\n","    </tr>\n","    <tr>\n","      <td>182</td>\n","      <td>1.685200</td>\n","    </tr>\n","    <tr>\n","      <td>183</td>\n","      <td>1.668600</td>\n","    </tr>\n","    <tr>\n","      <td>184</td>\n","      <td>1.679900</td>\n","    </tr>\n","    <tr>\n","      <td>185</td>\n","      <td>1.655400</td>\n","    </tr>\n","    <tr>\n","      <td>186</td>\n","      <td>1.651300</td>\n","    </tr>\n","    <tr>\n","      <td>187</td>\n","      <td>1.673300</td>\n","    </tr>\n","    <tr>\n","      <td>188</td>\n","      <td>1.686200</td>\n","    </tr>\n","    <tr>\n","      <td>189</td>\n","      <td>1.650800</td>\n","    </tr>\n","    <tr>\n","      <td>190</td>\n","      <td>1.687500</td>\n","    </tr>\n","    <tr>\n","      <td>191</td>\n","      <td>1.634300</td>\n","    </tr>\n","    <tr>\n","      <td>192</td>\n","      <td>1.665900</td>\n","    </tr>\n","    <tr>\n","      <td>193</td>\n","      <td>1.670100</td>\n","    </tr>\n","    <tr>\n","      <td>194</td>\n","      <td>1.643600</td>\n","    </tr>\n","    <tr>\n","      <td>195</td>\n","      <td>1.641500</td>\n","    </tr>\n","    <tr>\n","      <td>196</td>\n","      <td>1.634100</td>\n","    </tr>\n","    <tr>\n","      <td>197</td>\n","      <td>1.650300</td>\n","    </tr>\n","    <tr>\n","      <td>198</td>\n","      <td>1.643300</td>\n","    </tr>\n","    <tr>\n","      <td>199</td>\n","      <td>1.629300</td>\n","    </tr>\n","    <tr>\n","      <td>200</td>\n","      <td>1.667900</td>\n","    </tr>\n","    <tr>\n","      <td>201</td>\n","      <td>1.662400</td>\n","    </tr>\n","    <tr>\n","      <td>202</td>\n","      <td>1.623500</td>\n","    </tr>\n","    <tr>\n","      <td>203</td>\n","      <td>1.641700</td>\n","    </tr>\n","    <tr>\n","      <td>204</td>\n","      <td>1.623500</td>\n","    </tr>\n","    <tr>\n","      <td>205</td>\n","      <td>1.617700</td>\n","    </tr>\n","    <tr>\n","      <td>206</td>\n","      <td>1.625800</td>\n","    </tr>\n","    <tr>\n","      <td>207</td>\n","      <td>1.660300</td>\n","    </tr>\n","    <tr>\n","      <td>208</td>\n","      <td>1.620400</td>\n","    </tr>\n","    <tr>\n","      <td>209</td>\n","      <td>1.615900</td>\n","    </tr>\n","    <tr>\n","      <td>210</td>\n","      <td>1.612100</td>\n","    </tr>\n","    <tr>\n","      <td>211</td>\n","      <td>1.618900</td>\n","    </tr>\n","    <tr>\n","      <td>212</td>\n","      <td>1.604700</td>\n","    </tr>\n","    <tr>\n","      <td>213</td>\n","      <td>1.624200</td>\n","    </tr>\n","    <tr>\n","      <td>214</td>\n","      <td>1.642900</td>\n","    </tr>\n","    <tr>\n","      <td>215</td>\n","      <td>1.620600</td>\n","    </tr>\n","    <tr>\n","      <td>216</td>\n","      <td>1.573800</td>\n","    </tr>\n","    <tr>\n","      <td>217</td>\n","      <td>1.608800</td>\n","    </tr>\n","    <tr>\n","      <td>218</td>\n","      <td>1.632300</td>\n","    </tr>\n","    <tr>\n","      <td>219</td>\n","      <td>1.620600</td>\n","    </tr>\n","    <tr>\n","      <td>220</td>\n","      <td>1.615200</td>\n","    </tr>\n","    <tr>\n","      <td>221</td>\n","      <td>1.589400</td>\n","    </tr>\n","    <tr>\n","      <td>222</td>\n","      <td>1.591800</td>\n","    </tr>\n","    <tr>\n","      <td>223</td>\n","      <td>1.629500</td>\n","    </tr>\n","    <tr>\n","      <td>224</td>\n","      <td>1.637800</td>\n","    </tr>\n","    <tr>\n","      <td>225</td>\n","      <td>1.608000</td>\n","    </tr>\n","    <tr>\n","      <td>226</td>\n","      <td>1.627400</td>\n","    </tr>\n","    <tr>\n","      <td>227</td>\n","      <td>1.605900</td>\n","    </tr>\n","    <tr>\n","      <td>228</td>\n","      <td>1.616900</td>\n","    </tr>\n","    <tr>\n","      <td>229</td>\n","      <td>1.620700</td>\n","    </tr>\n","    <tr>\n","      <td>230</td>\n","      <td>1.634900</td>\n","    </tr>\n","    <tr>\n","      <td>231</td>\n","      <td>1.622500</td>\n","    </tr>\n","    <tr>\n","      <td>232</td>\n","      <td>1.622300</td>\n","    </tr>\n","    <tr>\n","      <td>233</td>\n","      <td>1.567700</td>\n","    </tr>\n","    <tr>\n","      <td>234</td>\n","      <td>1.632200</td>\n","    </tr>\n","    <tr>\n","      <td>235</td>\n","      <td>1.615700</td>\n","    </tr>\n","    <tr>\n","      <td>236</td>\n","      <td>1.613200</td>\n","    </tr>\n","    <tr>\n","      <td>237</td>\n","      <td>1.597800</td>\n","    </tr>\n","    <tr>\n","      <td>238</td>\n","      <td>1.636300</td>\n","    </tr>\n","    <tr>\n","      <td>239</td>\n","      <td>1.589100</td>\n","    </tr>\n","    <tr>\n","      <td>240</td>\n","      <td>1.619600</td>\n","    </tr>\n","    <tr>\n","      <td>241</td>\n","      <td>1.588000</td>\n","    </tr>\n","    <tr>\n","      <td>242</td>\n","      <td>1.588000</td>\n","    </tr>\n","    <tr>\n","      <td>243</td>\n","      <td>1.592000</td>\n","    </tr>\n","    <tr>\n","      <td>244</td>\n","      <td>1.548400</td>\n","    </tr>\n","    <tr>\n","      <td>245</td>\n","      <td>1.607800</td>\n","    </tr>\n","    <tr>\n","      <td>246</td>\n","      <td>1.614900</td>\n","    </tr>\n","    <tr>\n","      <td>247</td>\n","      <td>1.579900</td>\n","    </tr>\n","    <tr>\n","      <td>248</td>\n","      <td>1.564600</td>\n","    </tr>\n","    <tr>\n","      <td>249</td>\n","      <td>1.581800</td>\n","    </tr>\n","    <tr>\n","      <td>250</td>\n","      <td>1.572100</td>\n","    </tr>\n","    <tr>\n","      <td>251</td>\n","      <td>1.572700</td>\n","    </tr>\n","    <tr>\n","      <td>252</td>\n","      <td>1.574700</td>\n","    </tr>\n","    <tr>\n","      <td>253</td>\n","      <td>1.582100</td>\n","    </tr>\n","    <tr>\n","      <td>254</td>\n","      <td>1.583300</td>\n","    </tr>\n","    <tr>\n","      <td>255</td>\n","      <td>1.593600</td>\n","    </tr>\n","    <tr>\n","      <td>256</td>\n","      <td>1.554900</td>\n","    </tr>\n","    <tr>\n","      <td>257</td>\n","      <td>1.570600</td>\n","    </tr>\n","    <tr>\n","      <td>258</td>\n","      <td>1.595600</td>\n","    </tr>\n","    <tr>\n","      <td>259</td>\n","      <td>1.558700</td>\n","    </tr>\n","    <tr>\n","      <td>260</td>\n","      <td>1.551600</td>\n","    </tr>\n","    <tr>\n","      <td>261</td>\n","      <td>1.548000</td>\n","    </tr>\n","    <tr>\n","      <td>262</td>\n","      <td>1.547200</td>\n","    </tr>\n","    <tr>\n","      <td>263</td>\n","      <td>1.576100</td>\n","    </tr>\n","    <tr>\n","      <td>264</td>\n","      <td>1.551900</td>\n","    </tr>\n","    <tr>\n","      <td>265</td>\n","      <td>1.539400</td>\n","    </tr>\n","    <tr>\n","      <td>266</td>\n","      <td>1.541100</td>\n","    </tr>\n","    <tr>\n","      <td>267</td>\n","      <td>1.568300</td>\n","    </tr>\n","    <tr>\n","      <td>268</td>\n","      <td>1.542300</td>\n","    </tr>\n","    <tr>\n","      <td>269</td>\n","      <td>1.568900</td>\n","    </tr>\n","    <tr>\n","      <td>270</td>\n","      <td>1.561200</td>\n","    </tr>\n","    <tr>\n","      <td>271</td>\n","      <td>1.540700</td>\n","    </tr>\n","    <tr>\n","      <td>272</td>\n","      <td>1.558900</td>\n","    </tr>\n","    <tr>\n","      <td>273</td>\n","      <td>1.536400</td>\n","    </tr>\n","    <tr>\n","      <td>274</td>\n","      <td>1.548200</td>\n","    </tr>\n","    <tr>\n","      <td>275</td>\n","      <td>1.547200</td>\n","    </tr>\n","    <tr>\n","      <td>276</td>\n","      <td>1.527200</td>\n","    </tr>\n","    <tr>\n","      <td>277</td>\n","      <td>1.538700</td>\n","    </tr>\n","    <tr>\n","      <td>278</td>\n","      <td>1.534100</td>\n","    </tr>\n","    <tr>\n","      <td>279</td>\n","      <td>1.531700</td>\n","    </tr>\n","    <tr>\n","      <td>280</td>\n","      <td>1.539900</td>\n","    </tr>\n","    <tr>\n","      <td>281</td>\n","      <td>1.537500</td>\n","    </tr>\n","    <tr>\n","      <td>282</td>\n","      <td>1.544300</td>\n","    </tr>\n","    <tr>\n","      <td>283</td>\n","      <td>1.519100</td>\n","    </tr>\n","    <tr>\n","      <td>284</td>\n","      <td>1.524200</td>\n","    </tr>\n","    <tr>\n","      <td>285</td>\n","      <td>1.527900</td>\n","    </tr>\n","    <tr>\n","      <td>286</td>\n","      <td>1.527000</td>\n","    </tr>\n","    <tr>\n","      <td>287</td>\n","      <td>1.560900</td>\n","    </tr>\n","    <tr>\n","      <td>288</td>\n","      <td>1.547300</td>\n","    </tr>\n","    <tr>\n","      <td>289</td>\n","      <td>1.545400</td>\n","    </tr>\n","    <tr>\n","      <td>290</td>\n","      <td>1.527600</td>\n","    </tr>\n","    <tr>\n","      <td>291</td>\n","      <td>1.543000</td>\n","    </tr>\n","    <tr>\n","      <td>292</td>\n","      <td>1.538000</td>\n","    </tr>\n","    <tr>\n","      <td>293</td>\n","      <td>1.510100</td>\n","    </tr>\n","    <tr>\n","      <td>294</td>\n","      <td>1.520700</td>\n","    </tr>\n","    <tr>\n","      <td>295</td>\n","      <td>1.501700</td>\n","    </tr>\n","    <tr>\n","      <td>296</td>\n","      <td>1.524900</td>\n","    </tr>\n","    <tr>\n","      <td>297</td>\n","      <td>1.531100</td>\n","    </tr>\n","    <tr>\n","      <td>298</td>\n","      <td>1.531000</td>\n","    </tr>\n","    <tr>\n","      <td>299</td>\n","      <td>1.534600</td>\n","    </tr>\n","    <tr>\n","      <td>300</td>\n","      <td>1.529300</td>\n","    </tr>\n","    <tr>\n","      <td>301</td>\n","      <td>1.513300</td>\n","    </tr>\n","    <tr>\n","      <td>302</td>\n","      <td>1.504700</td>\n","    </tr>\n","    <tr>\n","      <td>303</td>\n","      <td>1.546000</td>\n","    </tr>\n","    <tr>\n","      <td>304</td>\n","      <td>1.519600</td>\n","    </tr>\n","    <tr>\n","      <td>305</td>\n","      <td>1.516000</td>\n","    </tr>\n","    <tr>\n","      <td>306</td>\n","      <td>1.503200</td>\n","    </tr>\n","    <tr>\n","      <td>307</td>\n","      <td>1.534700</td>\n","    </tr>\n","    <tr>\n","      <td>308</td>\n","      <td>1.522000</td>\n","    </tr>\n","    <tr>\n","      <td>309</td>\n","      <td>1.496700</td>\n","    </tr>\n","    <tr>\n","      <td>310</td>\n","      <td>1.499800</td>\n","    </tr>\n","    <tr>\n","      <td>311</td>\n","      <td>1.503400</td>\n","    </tr>\n","    <tr>\n","      <td>312</td>\n","      <td>1.513200</td>\n","    </tr>\n","    <tr>\n","      <td>313</td>\n","      <td>1.501000</td>\n","    </tr>\n","    <tr>\n","      <td>314</td>\n","      <td>1.523300</td>\n","    </tr>\n","    <tr>\n","      <td>315</td>\n","      <td>1.515600</td>\n","    </tr>\n","    <tr>\n","      <td>316</td>\n","      <td>1.505200</td>\n","    </tr>\n","    <tr>\n","      <td>317</td>\n","      <td>1.499400</td>\n","    </tr>\n","    <tr>\n","      <td>318</td>\n","      <td>1.471300</td>\n","    </tr>\n","    <tr>\n","      <td>319</td>\n","      <td>1.473800</td>\n","    </tr>\n","    <tr>\n","      <td>320</td>\n","      <td>1.525400</td>\n","    </tr>\n","    <tr>\n","      <td>321</td>\n","      <td>1.508800</td>\n","    </tr>\n","    <tr>\n","      <td>322</td>\n","      <td>1.504000</td>\n","    </tr>\n","    <tr>\n","      <td>323</td>\n","      <td>1.505800</td>\n","    </tr>\n","    <tr>\n","      <td>324</td>\n","      <td>1.501100</td>\n","    </tr>\n","    <tr>\n","      <td>325</td>\n","      <td>1.489800</td>\n","    </tr>\n","    <tr>\n","      <td>326</td>\n","      <td>1.495400</td>\n","    </tr>\n","    <tr>\n","      <td>327</td>\n","      <td>1.501500</td>\n","    </tr>\n","    <tr>\n","      <td>328</td>\n","      <td>1.512600</td>\n","    </tr>\n","    <tr>\n","      <td>329</td>\n","      <td>1.503900</td>\n","    </tr>\n","    <tr>\n","      <td>330</td>\n","      <td>1.491400</td>\n","    </tr>\n","    <tr>\n","      <td>331</td>\n","      <td>1.487200</td>\n","    </tr>\n","    <tr>\n","      <td>332</td>\n","      <td>1.487100</td>\n","    </tr>\n","    <tr>\n","      <td>333</td>\n","      <td>1.477300</td>\n","    </tr>\n","    <tr>\n","      <td>334</td>\n","      <td>1.507900</td>\n","    </tr>\n","    <tr>\n","      <td>335</td>\n","      <td>1.479300</td>\n","    </tr>\n","    <tr>\n","      <td>336</td>\n","      <td>1.445900</td>\n","    </tr>\n","    <tr>\n","      <td>337</td>\n","      <td>1.523600</td>\n","    </tr>\n","    <tr>\n","      <td>338</td>\n","      <td>1.463200</td>\n","    </tr>\n","    <tr>\n","      <td>339</td>\n","      <td>1.484800</td>\n","    </tr>\n","    <tr>\n","      <td>340</td>\n","      <td>1.460200</td>\n","    </tr>\n","    <tr>\n","      <td>341</td>\n","      <td>1.460400</td>\n","    </tr>\n","    <tr>\n","      <td>342</td>\n","      <td>1.461400</td>\n","    </tr>\n","  </tbody>\n","</table><p>"]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["None\n","worker id: \n","data buffer full\n"]}]},{"cell_type":"markdown","source":["Evaluation data class:"],"metadata":{"id":"bLkdCY9CHUvr"}},{"cell_type":"code","source":["class EvalDataset(Dataset):\n","\n","    def __init__(self,\n","                graph,\n","                tokenizer,\n","                split=\"id\", # or \"uniform\", or \"mem\"\n","                num_options=10,\n","                use_rule_length=False,\n","                seed=42):\n","\n","        super(EvalDataset, self).__init__()\n","        self.split = split\n","        self.tokenizer = tokenizer\n","        self.eos_token = self.tokenizer.eos_token\n","        self.num_options = num_options\n","        self.num_test = graph.num_test\n","        set_seed(seed)\n","        self.path_length = []\n","\n","        self.data = graph\n","        if split == 'id':\n","            self.triples = self.data.id_test_triples\n","            self.alt_ts = self.data.id_alt_ts\n","        elif split == 'uniform':\n","            self.triples = self.data.uniform_test_triples\n","            self.alt_ts = self.data.uniform_alt_ts\n","        elif split == \"mem\":\n","            self.triples = self.mem_triples\n","        else:\n","            print(\"no such split: \", split)\n","            raise NotImplementedError\n","\n","        if use_rule_length:\n","            print(\"using rule length\")\n","            self.path_length = [min([len(rule) - 1 for rule in rules]) for rules in self.data.test_rules]\n","\n","        self.get_data()\n","        if len(self.path_length) == 0:\n","            self.get_path_length()\n","\n","    def get_path_length(self):\n","        for h, r, t in self.input_triples:\n","            try:\n","                l = nx.shortest_path_length(self.data.G, source=h, target=t)\n","            except:\n","                l = 0\n","                print(f'cannot find shortest path between {h} and {t}')\n","            self.path_length.append(l)\n","        print(\"avg path length: \", np.mean(self.path_length))\n","\n","    def get_data(self):\n","        self.input_text = []\n","        self.input_triples = []\n","        self.seen_ts = []\n","        self.options = []\n","\n","        for idx, triple in enumerate(self.triples):\n","            h, r, t = triple\n","\n","            if self.split == \"mem\":\n","                seen_ts = []\n","                if h in self.data.G:\n","                    for e in self.data.G[h]:\n","                        if r in self.data.G[h][e]['id']:\n","                            seen_ts.append(e)\n","            else:\n","                seen_ts = self.alt_ts[idx]\n","            self.seen_ts.append(seen_ts)\n","\n","            question = h + ' ' + r + ' '\n","            ans = t\n","\n","            options = [ans]\n","            for i in range(self.num_options-1):\n","                neg_e = random.choice(self.data.all_es)\n","                while neg_e == ans or neg_e in seen_ts:\n","                    neg_e = random.choice(self.data.all_es)\n","                options.append(neg_e)\n","\n","            self.input_text.append(question)\n","            random.shuffle(options)\n","            self.options.append(options)\n","\n","            self.input_triples.append(triple)\n","\n","    def __len__(self):\n","        return len(self.input_text)\n","\n","    def __getitem__(self, i):\n","        example = [self.input_text[i], self.input_triples[i], self.seen_ts[i]]\n","        example += [self.options[i]]\n","        example.append(self.path_length[i])\n","        return example"],"metadata":{"id":"Tps9kqoIFuf8"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Create a evaluation dataset based on the synthetic graph generated before:"],"metadata":{"id":"WlBrHd-iHZMd"}},{"cell_type":"code","source":["eval_dataset = EvalDataset(graph, tokenizer)"],"metadata":{"id":"ksgtknd-PpkC"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["The evaluation function (set device to \"cuda\" if you have GPUs):"],"metadata":{"id":"zp1GYdroJrho"}},{"cell_type":"code","source":["def eval(eval_dataset, model, batch_size=16, max_length=64, num_test=1000, device=\"cpu\"):\n","\n","    def forward(\n","        self,\n","        input_ids: torch.LongTensor = None,\n","        attention_mask: Optional[torch.Tensor] = None,\n","        position_ids: Optional[torch.LongTensor] = None,\n","        past_key_values: Optional[Union[Cache, List[torch.FloatTensor]]] = None,\n","        inputs_embeds: Optional[torch.FloatTensor] = None,\n","        labels: Optional[torch.LongTensor] = None,\n","        use_cache: Optional[bool] = None,\n","        output_attentions: Optional[bool] = None,\n","        output_hidden_states: Optional[bool] = True,\n","        return_dict: Optional[bool] = None,\n","        cache_position: Optional[torch.LongTensor] = None,\n","        ) -> Union[Tuple, CausalLMOutputWithPast]:\n","        r\"\"\"\n","        Args:\n","            labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):\n","                Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,\n","                config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored\n","                (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.\n","\n","        Returns:\n","\n","        Example:\n","\n","        ```python\n","        >>> from transformers import AutoTokenizer, LlamaForCausalLM\n","\n","        >>> model = LlamaForCausalLM.from_pretrained(\"meta-llama/Llama-2-7b-hf\")\n","        >>> tokenizer = AutoTokenizer.from_pretrained(\"meta-llama/Llama-2-7b-hf\")\n","\n","        >>> prompt = \"Hey, are you conscious? Can you talk to me?\"\n","        >>> inputs = tokenizer(prompt, return_tensors=\"pt\")\n","\n","        >>> # Generate\n","        >>> generate_ids = model.generate(inputs.input_ids, max_length=30)\n","        >>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]\n","        \"Hey, are you conscious? Can you talk to me?\\nI'm not conscious, but I can talk to you.\"\n","        ```\"\"\"\n","        output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions\n","        output_hidden_states = (\n","            output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states\n","        )\n","        return_dict = return_dict if return_dict is not None else self.config.use_return_dict\n","\n","        # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)\n","        outputs = self.model(\n","            input_ids=input_ids,\n","            attention_mask=attention_mask,\n","            position_ids=position_ids,\n","            past_key_values=past_key_values,\n","            inputs_embeds=inputs_embeds,\n","            use_cache=use_cache,\n","            output_attentions=output_attentions,\n","            output_hidden_states=output_hidden_states,\n","            return_dict=return_dict,\n","            cache_position=cache_position,\n","        )\n","\n","        hidden_states = outputs[0]\n","        # hidden_states = outputs.hidden_states[-2]\n","        logits = self.lm_head(hidden_states)\n","        logits = logits.float()\n","\n","        loss = None\n","        if labels is not None:\n","            # Shift so that tokens < n predict n\n","            shift_logits = logits[..., :-1, :].contiguous()\n","            shift_labels = labels[..., 1:].contiguous()\n","            # Flatten the tokens\n","            loss_fct = CrossEntropyLoss(reduction='none')\n","            shift_logits = shift_logits.view(-1, self.config.vocab_size)\n","            shift_labels = shift_labels.view(-1)\n","            # Enable model parallelism\n","            shift_labels = shift_labels.to(shift_logits.device)\n","            loss = loss_fct(shift_logits, shift_labels)\n","            loss = loss.view([labels.size(0), labels.size(1) - 1])\n","            loss = loss.sum(-1)\n","\n","        if not return_dict:\n","            output = (logits,) + outputs[1:]\n","            return (loss,) + output if loss is not None else output\n","\n","        return CausalLMOutputWithPast(\n","            loss=loss,\n","            logits=logits,\n","            past_key_values=outputs.past_key_values,\n","            hidden_states=outputs.hidden_states,\n","            attentions=outputs.attentions,\n","        )\n","\n","    # monkey patching\n","    original_forward = LlamaForCausalLM.forward\n","    LlamaForCausalLM.forward = forward\n","    model.eval()\n","\n","    def collect_data(instances, device='cpu'):\n","        input_ids = instances[\"input_ids\"]\n","        labels = instances[\"labels\"]\n","        input_ids = torch.nn.utils.rnn.pad_sequence(\n","            input_ids, batch_first=True, padding_value=tokenizer.pad_token_id\n","        )\n","        labels = torch.nn.utils.rnn.pad_sequence(labels, batch_first=True,\n","                                                padding_value=IGNORE_INDEX)\n","\n","        attn_mask = input_ids.ne(tokenizer.pad_token_id)\n","\n","        return dict(\n","            input_ids=input_ids.to(device),\n","            labels=labels.to(device),\n","            attention_mask=attn_mask.to(device),\n","        )\n","\n","    num_choices = eval_dataset.num_options\n","    print(\"number of choices: \", num_choices)\n","\n","    input_texts = []\n","    output_texts = []\n","    gts = []\n","    example_ids = []\n","    id = 0\n","    num_correct = 0\n","    num_all = 0\n","    losses = []\n","\n","    for q, triple, seen_t, opts, l in eval_dataset:\n","        id += 1\n","        if id > min(num_test, eval_dataset.num_test):\n","            break\n","        print(q, triple, seen_t, opts, l)\n","        label = triple[-1]\n","        input_text = q\n","        for op in opts:\n","            input_texts.append(input_text)\n","            output_texts.append(op)\n","            gts.append(op == label)\n","            example_ids.append(id)\n","\n","        if len(input_texts) >= batch_size or id == min(len(eval_dataset)-1, num_test):\n","            data_dict = prepare_data(input_texts, output_texts, tokenizer, max_length)\n","            input_data = collect_data(data_dict, device)\n","            print(\"input data shape: \", input_data['input_ids'].shape)\n","            loss = model(**input_data).loss.detach().cpu()\n","            print(\"loss: \", loss)\n","            for i in range(len(input_texts)//num_choices):\n","                pred = torch.argmin(loss[i*num_choices: (i+1)*num_choices]).item()\n","                gt = np.arange(num_choices)[gts[i*num_choices: (i+1)*num_choices]][0]\n","                losses.append(loss[i*num_choices: (i+1)*num_choices][gt])\n","                if pred == gt:\n","                    num_correct += 1\n","                num_all += 1\n","\n","            acc = num_correct/num_all\n","            print(\"Accuracy: \", acc)\n","            mean_loss = np.mean(losses)\n","            print(\"Loss: \", mean_loss)\n","\n","            input_texts = []\n","            output_texts = []\n","            gts = []\n","            example_ids = []\n","\n","    # restore the original forward function\n","    LlamaForCausalLM.forward = original_forward\n","\n","    return acc, mean_loss"],"metadata":{"id":"7bJvX4JlJWA0"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Evaluate the previously trained language model:"],"metadata":{"id":"VQRbkUPfOj46"}},{"cell_type":"code","source":["acc, loss = eval(eval_dataset, model)"],"metadata":{"id":"lWS9yJEaHTBO"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Sweeping function to train and evaluate a range of model sizes and plot the U-shaped loss curve and acc curve (this will likely take a very long time/crush with only Colab CPU):"],"metadata":{"id":"D_FCtkTJPI7e"}},{"cell_type":"code","source":["def scaling_sweep(train_dataset, eval_dataset, y_axis='loss'):\n","    accs = []\n","    losses = []\n","    error_losses = []\n","    sizes = []\n","    for i in range(1, 4):\n","        for j in [i-1, i, i+1]:\n","            if j > 0 and j < 4:\n","                num_p = compute_llama_param(2**i, 2**j, 19)\n","                model, tokenizer = train(train_dataset, f'llama-{2**i}-{2**j}')\n","                acc, loss = eval(eval_dataset, model)\n","                accs.append(acc)\n","                losses.append(loss)\n","                sizes.append(num_p)\n","\n","    idx = np.argsort(sizes)\n","    accs = np.array(accs)[idx]\n","    losses = np.array(losses)[idx]\n","    sizes = np.array(sizes)[idx]\n","    log_sizes = np.log(sizes)\n","    print('log sizes: ', log_sizes)\n","    print('accs: ', accs)\n","    print('losses: ', losses)\n","\n","    # plot acc\n","    plt.plot(log_sizes, accs, 'o-', linewidth=2)\n","    plt.xticks(np.log(sizes), (sizes/1000000).round(1), size=8)\n","    plt.xlabel(f'Llama model size (M)', size=12)\n","    plt.ylabel(f'Accuracy', size=12)\n","    plt.legend(fontsize=12)\n","    plt.show()\n","    plt.savefig('acc.png')\n","    plt.close()\n","\n","    # plot loss\n","    plt.plot(log_sizes, losses, 'o-', linewidth=2)\n","    plt.xticks(np.log(sizes), (sizes/1000000).round(1), size=8)\n","    plt.xlabel(f'Llama model size (M)', size=12)\n","    plt.ylabel(f'Loss', size=12)\n","    plt.legend(loc='upper left', fontsize=12)\n","    plt.show()\n","    plt.savefig('loss.png')\n","    plt.close()"],"metadata":{"id":"pDvf2laCOiLW"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["scaling_sweep(train_dataset, eval_dataset)"],"metadata":{"id":"l7h6QycrSe82"},"execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.0"},"colab":{"provenance":[]}},"nbformat":4,"nbformat_minor":0}