Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
% TO START PROGRAM JUST % TYPE 'MAIN' ON THE RIGHT % AND CLICK RUN % %If 'Run' button is cut off %use this link: % %https://swish.swi-prolog.org/p/Covid-Test.pl main :- pickFile(FileName), getSubsAndPools(FileName, File, Subs, Names), getPairedData(File, Names, Groups), findPositive(Groups, Subs, Ps, PLen), writePs(Ps, PLen). pickFile(FileName) :- write("Please Enter the name of the data file ('small' or 'large'):"), read(FileName), write('Reading from '), write(FileName), nl. getSubsAndPools(FileName, File, Subs, Names) :- getFile(FileName, File), write('File contained '), length(File, Length), write(Length), write(' entries for '), subjList(File, Subs), length(Subs, NumSubs), poolNames(File, Names), length(Names, PoolNum), write(NumSubs), write(' subjects and '), write(PoolNum), write(' pools.'), nl. getPairedData(File, Names, Groups) :- pools(File, Pools), pairedPools(Names, Pools, Groups). getFile(Name, File) :- files(Data), member(data(Name, File), Data). findPositive(Groups, Subs, Ps, PLen) :- write("Enter a list of groups that tested positive ('[a,c,e,f]'):"), read(Pos), negativeGroups(Groups, Pos, NGroups), negativeSubs(NGroups, AllNs), removeDups(AllNs, Ns), positiveSubs(Subs, Ns, Ps), length(Ps, PLen). %makes a list of all of the subjects subjList(File, Subjs) :- setof(Subj, X^member(in(Subj, X), File), Subjs). %Creates a list of groups ([a,b,c,d,e,f]) poolNames(File, Names) :- setof(Name, X^member(in(X, Name), File), Names). %Creates a Combined list of groups of data (List in list) pools(File, Pools) :- findall(AllPools, poolsSeperate(File, AllPools), Pools). %Creates A seperate list for each of the pools in the data poolsSeperate(File, AllPools):- setof(Pool, member(in(Pool, _), File), AllPools). %pairs together the Pools and the Pool names pairedPools([], [], []). pairedPools([Name|Names], [Pool|Pools], [(Name, Pool)|List]) :- pairedPools(Names, Pools, List). negativeGroups(Groups, PList, NPools) :- %The Pool is in the group, but is not in the positive list findall(Pool, (member((Name, Pool), Groups), \+(member(Name, PList))), NPools). %Makes a list of all the negative subjects(with repeats) negativeSubs([], []). negativeSubs([NGroup|NGroups], NewNSubs) :- append(NGroup, NSubs, NewNSubs), negativeSubs(NGroups, NSubs). % Remove duplicates from a list removeDups(List, ListNoDups) :- setof(X, member(X, List), ListNoDups). positiveSubs(Subs, NList, PList) :- %The Positive Subject is in the group, but is not in the Negative list findall(X, (member(X, Subs), \+(member(X, NList))), PList). writePs([], 0) :- write('There were no positive subjects.'). writePs([P], 1) :- write('There was one positive subject: '), write(P). writePs(Ps, L) :- L>1, write('There were '), write(L), write(' positive subjects: '), write(Ps). files( [ data(small, [in(0,a), in(2,a), in(3,a), in(7,a), in(4,b), in(5,b), in(6,b), in(1,b), in(0,c), in(3,c), in(4,c), in(1,c), in(5,d), in(6,d), in(7,d), in(2,d), in(0,e), in(4,e), in(5,e), in(2,e), in(6,f), in(7,f), in(1,f), in(3,f)]), data(large, [in(1, a), in(9, a), in(17, a), in(25, a), in(33, a), in(41, a), in(49, a), in(57, a), in(65, a), in(73, a), in(81, a), in(89, a), in(97, a), in(105, a), in(113, a), in(121, a), in(129, a), in(137, a), in(145, a), in(153, a), in(161, a), in(169, a), in(177, a), in(185, a), in(193, a), in(201, a), in(209, a), in(217, a), in(225, a), in(233, a), in(241, a), in(249, a), in(257, a), in(265, a), in(273, a), in(281, a), in(289, a), in(297, a), in(305, a), in(313, a), in(321, a), in(329, a), in(337, a), in(345, a), in(353, a), in(361, a), in(369, a), in(377, a), in(2, b), in(10, b), in(18, b), in(26, b), in(34, b), in(42, b), in(50, b), in(58, b), in(66, b), in(74, b), in(82, b), in(90, b), in(98, b), in(106, b), in(114, b), in(122, b), in(130, b), in(138, b), in(146, b), in(154, b), in(162, b), in(170, b), in(178, b), in(186, b), in(194, b), in(202, b), in(210, b), in(218, b), in(226, b), in(234, b), in(242, b), in(250, b), in(258, b), in(266, b), in(274, b), in(282, b), in(290, b), in(298, b), in(306, b), in(314, b), in(322, b), in(330, b), in(338, b), in(346, b), in(354, b), in(362, b), in(370, b), in(378, b), in(3, c), in(11, c), in(19, c), in(27, c), in(35, c), in(43, c), in(51, c), in(59, c), in(67, c), in(75, c), in(83, c), in(91, c), in(99, c), in(107, c), in(115, c), in(123, c), in(131, c), in(139, c), in(147, c), in(155, c), in(163, c), in(171, c), in(179, c), in(187, c), in(195, c), in(203, c), in(211, c), in(219, c), in(227, c), in(235, c), in(243, c), in(251, c), in(259, c), in(267, c), in(275, c), in(283, c), in(291, c), in(299, c), in(307, c), in(315, c), in(323, c), in(331, c), in(339, c), in(347, c), in(355, c), in(363, c), in(371, c), in(379, c), in(4, d), in(12, d), in(20, d), in(28, d), in(36, d), in(44, d), in(52, d), in(60, d), in(68, d), in(76, d), in(84, d), in(92, d), in(100, d), in(108, d), in(116, d), in(124, d), in(132, d), in(140, d), in(148, d), in(156, d), in(164, d), in(172, d), in(180, d), in(188, d), in(196, d), in(204, d), in(212, d), in(220, d), in(228, d), in(236, d), in(244, d), in(252, d), in(260, d), in(268, d), in(276, d), in(284, d), in(292, d), in(300, d), in(308, d), in(316, d), in(324, d), in(332, d), in(340, d), in(348, d), in(356, d), in(364, d), in(372, d), in(380, d), in(5, e), in(13, e), in(21, e), in(29, e), in(37, e), in(45, e), in(53, e), in(61, e), in(69, e), in(77, e), in(85, e), in(93, e), in(101, e), in(109, e), in(117, e), in(125, e), in(133, e), in(141, e), in(149, e), in(157, e), in(165, e), in(173, e), in(181, e), in(189, e), in(197, e), in(205, e), in(213, e), in(221, e), in(229, e), in(237, e), in(245, e), in(253, e), in(261, e), in(269, e), in(277, e), in(285, e), in(293, e), in(301, e), in(309, e), in(317, e), in(325, e), in(333, e), in(341, e), in(349, e), in(357, e), in(365, e), in(373, e), in(381, e), in(6, f), in(14, f), in(22, f), in(30, f), in(38, f), in(46, f), in(54, f), in(62, f), in(70, f), in(78, f), in(86, f), in(94, f), in(102, f), in(110, f), in(118, f), in(126, f), in(134, f), in(142, f), in(150, f), in(158, f), in(166, f), in(174, f), in(182, f), in(190, f), in(198, f), in(206, f), in(214, f), in(222, f), in(230, f), in(238, f), in(246, f), in(254, f), in(262, f), in(270, f), in(278, f), in(286, f), in(294, f), in(302, f), in(310, f), in(318, f), in(326, f), in(334, f), in(342, f), in(350, f), in(358, f), in(366, f), in(374, f), in(382, f), in(7, g), in(15, g), in(23, g), in(31, g), in(39, g), in(47, g), in(55, g), in(63, g), in(71, g), in(79, g), in(87, g), in(95, g), in(103, g), in(111, g), in(119, g), in(127, g), in(135, g), in(143, g), in(151, g), in(159, g), in(167, g), in(175, g), in(183, g), in(191, g), in(199, g), in(207, g), in(215, g), in(223, g), in(231, g), in(239, g), in(247, g), in(255, g), in(263, g), in(271, g), in(279, g), in(287, g), in(295, g), in(303, g), in(311, g), in(319, g), in(327, g), in(335, g), in(343, g), in(351, g), in(359, g), in(367, g), in(375, g), in(383, g), in(8, h), in(16, h), in(24, h), in(32, h), in(40, h), in(48, h), in(56, h), in(64, h), in(72, h), in(80, h), in(88, h), in(96, h), in(104, h), in(112, h), in(120, h), in(128, h), in(136, h), in(144, h), in(152, h), in(160, h), in(168, h), in(176, h), in(184, h), in(192, h), in(200, h), in(208, h), in(216, h), in(224, h), in(232, h), in(240, h), in(248, h), in(256, h), in(264, h), in(272, h), in(280, h), in(288, h), in(296, h), in(304, h), in(312, h), in(320, h), in(328, h), in(336, h), in(344, h), in(352, h), in(360, h), in(368, h), in(376, h), in(384, h), in(1, i), in(10, i), in(19, i), in(28, i), in(37, i), in(46, i), in(55, i), in(64, i), in(66, i), in(73, i), in(84, i), in(91, i), in(102, i), in(109, i), in(120, i), in(127, i), in(131, i), in(140, i), in(145, i), in(154, i), in(167, i), in(176, i), in(181, i), in(190, i), in(196, i), in(203, i), in(210, i), in(217, i), in(232, i), in(239, i), in(246, i), in(253, i), in(261, i), in(270, i), in(279, i), in(288, i), in(289, i), in(298, i), in(307, i), in(316, i), in(326, i), in(333, i), in(344, i), in(351, i), in(354, i), in(361, i), in(372, i), in(379, i), in(2, j), in(9, j), in(20, j), in(27, j), in(38, j), in(45, j), in(56, j), in(63, j), in(65, j), in(74, j), in(83, j), in(92, j), in(101, j), in(110, j), in(119, j), in(128, j), in(132, j), in(139, j), in(146, j), in(153, j), in(168, j), in(175, j), in(182, j), in(189, j), in(195, j), in(204, j), in(209, j), in(218, j), in(231, j), in(240, j), in(245, j), in(254, j), in(262, j), in(269, j), in(280, j), in(287, j), in(290, j), in(297, j), in(308, j), in(315, j), in(325, j), in(334, j), in(343, j), in(352, j), in(353, j), in(362, j), in(371, j), in(380, j), in(3, k), in(12, k), in(17, k), in(26, k), in(39, k), in(48, k), in(53, k), in(62, k), in(68, k), in(75, k), in(82, k), in(89, k), in(104, k), in(111, k), in(118, k), in(125, k), in(129, k), in(138, k), in(147, k), in(156, k), in(165, k), in(174, k), in(183, k), in(192, k), in(194, k), in(201, k), in(212, k), in(219, k), in(230, k), in(237, k), in(248, k), in(255, k), in(263, k), in(272, k), in(277, k), in(286, k), in(291, k), in(300, k), in(305, k), in(314, k), in(328, k), in(335, k), in(342, k), in(349, k), in(356, k), in(363, k), in(370, k), in(377, k), in(4, l), in(11, l), in(18, l), in(25, l), in(40, l), in(47, l), in(54, l), in(61, l), in(67, l), in(76, l), in(81, l), in(90, l), in(103, l), in(112, l), in(117, l), in(126, l), in(130, l), in(137, l), in(148, l), in(155, l), in(166, l), in(173, l), in(184, l), in(191, l), in(193, l), in(202, l), in(211, l), in(220, l), in(229, l), in(238, l), in(247, l), in(256, l), in(264, l), in(271, l), in(278, l), in(285, l), in(292, l), in(299, l), in(306, l), in(313, l), in(327, l), in(336, l), in(341, l), in(350, l), in(355, l), in(364, l), in(369, l), in(378, l), in(5, m), in(14, m), in(23, m), in(32, m), in(33, m), in(42, m), in(51, m), in(60, m), in(70, m), in(77, m), in(88, m), in(95, m), in(98, m), in(105, m), in(116, m), in(123, m), in(135, m), in(144, m), in(149, m), in(158, m), in(163, m), in(172, m), in(177, m), in(186, m), in(200, m), in(207, m), in(214, m), in(221, m), in(228, m), in(235, m), in(242, m), in(249, m), in(257, m), in(266, m), in(275, m), in(284, m), in(293, m), in(302, m), in(311, m), in(320, m), in(322, m), in(329, m), in(340, m), in(347, m), in(358, m), in(365, m), in(376, m), in(383, m), in(6, n), in(13, n), in(24, n), in(31, n), in(34, n), in(41, n), in(52, n), in(59, n), in(69, n), in(78, n), in(87, n), in(96, n), in(97, n), in(106, n), in(115, n), in(124, n), in(136, n), in(143, n), in(150, n), in(157, n), in(164, n), in(171, n), in(178, n), in(185, n), in(199, n), in(208, n), in(213, n), in(222, n), in(227, n), in(236, n), in(241, n), in(250, n), in(258, n), in(265, n), in(276, n), in(283, n), in(294, n), in(301, n), in(312, n), in(319, n), in(321, n), in(330, n), in(339, n), in(348, n), in(357, n), in(366, n), in(375, n), in(384, n), in(7, o), in(16, o), in(21, o), in(30, o), in(35, o), in(44, o), in(49, o), in(58, o), in(72, o), in(79, o), in(86, o), in(93, o), in(100, o), in(107, o), in(114, o), in(121, o), in(133, o), in(142, o), in(151, o), in(160, o), in(161, o), in(170, o), in(179, o), in(188, o), in(198, o), in(205, o), in(216, o), in(223, o), in(226, o), in(233, o), in(244, o), in(251, o), in(259, o), in(268, o), in(273, o), in(282, o), in(295, o), in(304, o), in(309, o), in(318, o), in(324, o), in(331, o), in(338, o), in(345, o), in(360, o), in(367, o), in(374, o), in(381, o), in(8, p), in(15, p), in(22, p), in(29, p), in(36, p), in(43, p), in(50, p), in(57, p), in(71, p), in(80, p), in(85, p), in(94, p), in(99, p), in(108, p), in(113, p), in(122, p), in(134, p), in(141, p), in(152, p), in(159, p), in(162, p), in(169, p), in(180, p), in(187, p), in(197, p), in(206, p), in(215, p), in(224, p), in(225, p), in(234, p), in(243, p), in(252, p), in(260, p), in(267, p), in(274, p), in(281, p), in(296, p), in(303, p), in(310, p), in(317, p), in(323, p), in(332, p), in(337, p), in(346, p), in(359, p), in(368, p), in(373, p), in(382, p), in(1, q), in(11, q), in(21, q), in(31, q), in(36, q), in(42, q), in(56, q), in(62, q), in(69, q), in(79, q), in(81, q), in(91, q), in(104, q), in(110, q), in(116, q), in(122, q), in(132, q), in(138, q), in(152, q), in(158, q), in(161, q), in(171, q), in(181, q), in(191, q), in(200, q), in(206, q), in(212, q), in(218, q), in(229, q), in(239, q), in(241, q), in(251, q), in(263, q), in(269, q), in(275, q), in(281, q), in(294, q), in(304, q), in(306, q), in(316, q), in(323, q), in(329, q), in(343, q), in(349, q), in(354, q), in(364, q), in(374, q), in(384, q), in(2, r), in(12, r), in(22, r), in(32, r), in(35, r), in(41, r), in(55, r), in(61, r), in(70, r), in(80, r), in(82, r), in(92, r), in(103, r), in(109, r), in(115, r), in(121, r), in(131, r), in(137, r), in(151, r), in(157, r), in(162, r), in(172, r), in(182, r), in(192, r), in(199, r), in(205, r), in(211, r), in(217, r), in(230, r), in(240, r), in(242, r), in(252, r), in(264, r), in(270, r), in(276, r), in(282, r), in(293, r), in(303, r), in(305, r), in(315, r), in(324, r), in(330, r), in(344, r), in(350, r), in(353, r), in(363, r), in(373, r), in(383, r), in(3, s), in(9, s), in(23, s), in(29, s), in(34, s), in(44, s), in(54, s), in(64, s), in(71, s), in(77, s), in(83, s), in(89, s), in(102, s), in(112, s), in(114, s), in(124, s), in(130, s), in(140, s), in(150, s), in(160, s), in(163, s), in(169, s), in(183, s), in(189, s), in(198, s), in(208, s), in(210, s), in(220, s), in(231, s), in(237, s), in(243, s), in(249, s), in(261, s), in(271, s), in(273, s), in(283, s), in(296, s), in(302, s), in(308, s), in(314, s), in(321, s), in(331, s), in(341, s), in(351, s), in(356, s), in(362, s), in(376, s), in(382, s), in(4, t), in(10, t), in(24, t), in(30, t), in(33, t), in(43, t), in(53, t), in(63, t), in(72, t), in(78, t), in(84, t), in(90, t), in(101, t), in(111, t), in(113, t), in(123, t), in(129, t), in(139, t), in(149, t), in(159, t), in(164, t), in(170, t), in(184, t), in(190, t), in(197, t), in(207, t), in(209, t), in(219, t), in(232, t), in(238, t), in(244, t), in(250, t), in(262, t), in(272, t), in(274, t), in(284, t), in(295, t), in(301, t), in(307, t), in(313, t), in(322, t), in(332, t), in(342, t), in(352, t), in(355, t), in(361, t), in(375, t), in(381, t), in(5, u), in(15, u), in(17, u), in(27, u), in(40, u), in(46, u), in(52, u), in(58, u), in(65, u), in(75, u), in(85, u), in(95, u), in(100, u), in(106, u), in(120, u), in(126, u), in(136, u), in(142, u), in(148, u), in(154, u), in(165, u), in(175, u), in(177, u), in(187, u), in(196, u), in(202, u), in(216, u), in(222, u), in(225, u), in(235, u), in(245, u), in(255, u), in(259, u), in(265, u), in(279, u), in(285, u), in(290, u), in(300, u), in(310, u), in(320, u), in(327, u), in(333, u), in(339, u), in(345, u), in(358, u), in(368, u), in(370, u), in(380, u), in(6, v), in(16, v), in(18, v), in(28, v), in(39, v), in(45, v), in(51, v), in(57, v), in(66, v), in(76, v), in(86, v), in(96, v), in(99, v), in(105, v), in(119, v), in(125, v), in(135, v), in(141, v), in(147, v), in(153, v), in(166, v), in(176, v), in(178, v), in(188, v), in(195, v), in(201, v), in(215, v), in(221, v), in(226, v), in(236, v), in(246, v), in(256, v), in(260, v), in(266, v), in(280, v), in(286, v), in(289, v), in(299, v), in(309, v), in(319, v), in(328, v), in(334, v), in(340, v), in(346, v), in(357, v), in(367, v), in(369, v), in(379, v), in(7, w), in(13, w), in(19, w), in(25, w), in(38, w), in(48, w), in(50, w), in(60, w), in(67, w), in(73, w), in(87, w), in(93, w), in(98, w), in(108, w), in(118, w), in(128, w), in(134, w), in(144, w), in(146, w), in(156, w), in(167, w), in(173, w), in(179, w), in(185, w), in(194, w), in(204, w), in(214, w), in(224, w), in(227, w), in(233, w), in(247, w), in(253, w), in(257, w), in(267, w), in(277, w), in(287, w), in(292, w), in(298, w), in(312, w), in(318, w), in(325, w), in(335, w), in(337, w), in(347, w), in(360, w), in(366, w), in(372, w), in(378, w), in(8, x), in(14, x), in(20, x), in(26, x), in(37, x), in(47, x), in(49, x), in(59, x), in(68, x), in(74, x), in(88, x), in(94, x), in(97, x), in(107, x), in(117, x), in(127, x), in(133, x), in(143, x), in(145, x), in(155, x), in(168, x), in(174, x), in(180, x), in(186, x), in(193, x), in(203, x), in(213, x), in(223, x), in(228, x), in(234, x), in(248, x), in(254, x), in(258, x), in(268, x), in(278, x), in(288, x), in(291, x), in(297, x), in(311, x), in(317, x), in(326, x), in(336, x), in(338, x), in(348, x), in(359, x), in(365, x), in(371, x), in(377, x), in(1, y), in(12, y), in(23, y), in(30, y), in(40, y), in(45, y), in(50, y), in(59, y), in(70, y), in(79, y), in(84, y), in(89, y), in(99, y), in(106, y), in(117, y), in(128, y), in(130, y), in(139, y), in(152, y), in(157, y), in(167, y), in(174, y), in(177, y), in(188, y), in(197, y), in(208, y), in(211, y), in(218, y), in(228, y), in(233, y), in(246, y), in(255, y), in(259, y), in(266, y), in(277, y), in(288, y), in(294, y), in(303, y), in(308, y), in(313, y), in(328, y), in(333, y), in(338, y), in(347, y), in(353, y), in(364, y), in(375, y), in(382, y), in(2, z), in(11, z), in(24, z), in(29, z), in(39, z), in(46, z), in(49, z), in(60, z), in(69, z), in(80, z), in(83, z), in(90, z), in(100, z), in(105, z), in(118, z), in(127, z), in(129, z), in(140, z), in(151, z), in(158, z), in(168, z), in(173, z), in(178, z), in(187, z), in(198, z), in(207, z), in(212, z), in(217, z), in(227, z), in(234, z), in(245, z), in(256, z), in(260, z), in(265, z), in(278, z), in(287, z), in(293, z), in(304, z), in(307, z), in(314, z), in(327, z), in(334, z), in(337, z), in(348, z), in(354, z), in(363, z), in(376, z), in(381, z), in(3, aa), in(10, aa), in(21, aa), in(32, aa), in(38, aa), in(47, aa), in(52, aa), in(57, aa), in(72, aa), in(77, aa), in(82, aa), in(91, aa), in(97, aa), in(108, aa), in(119, aa), in(126, aa), in(132, aa), in(137, aa), in(150, aa), in(159, aa), in(165, aa), in(176, aa), in(179, aa), in(186, aa), in(199, aa), in(206, aa), in(209, aa), in(220, aa), in(226, aa), in(235, aa), in(248, aa), in(253, aa), in(257, aa), in(268, aa), in(279, aa), in(286, aa), in(296, aa), in(301, aa), in(306, aa), in(315, aa), in(326, aa), in(335, aa), in(340, aa), in(345, aa), in(355, aa), in(362, aa), in(373, aa), in(384, aa), in(4, ab), in(9, ab), in(22, ab), in(31, ab), in(37, ab), in(48, ab), in(51, ab), in(58, ab), in(71, ab), in(78, ab), in(81, ab), in(92, ab), in(98, ab), in(107, ab), in(120, ab), in(125, ab), in(131, ab), in(138, ab), in(149, ab), in(160, ab), in(166, ab), in(175, ab), in(180, ab), in(185, ab), in(200, ab), in(205, ab), in(210, ab), in(219, ab), in(225, ab), in(236, ab), in(247, ab), in(254, ab), in(258, ab), in(267, ab), in(280, ab), in(285, ab), in(295, ab), in(302, ab), in(305, ab), in(316, ab), in(325, ab), in(336, ab), in(339, ab), in(346, ab), in(356, ab), in(361, ab), in(374, ab), in(383, ab), in(5, ac), in(16, ac), in(19, ac), in(26, ac), in(36, ac), in(41, ac), in(54, ac), in(63, ac), in(66, ac), in(75, ac), in(88, ac), in(93, ac), in(103, ac), in(110, ac), in(113, ac), in(124, ac), in(134, ac), in(143, ac), in(148, ac), in(153, ac), in(163, ac), in(170, ac), in(181, ac), in(192, ac), in(193, ac), in(204, ac), in(215, ac), in(222, ac), in(232, ac), in(237, ac), in(242, ac), in(251, ac), in(263, ac), in(270, ac), in(273, ac), in(284, ac), in(290, ac), in(299, ac), in(312, ac), in(317, ac), in(324, ac), in(329, ac), in(342, ac), in(351, ac), in(357, ac), in(368, ac), in(371, ac), in(378, ac), in(6, ad), in(15, ad), in(20, ad), in(25, ad), in(35, ad), in(42, ad), in(53, ad), in(64, ad), in(65, ad), in(76, ad), in(87, ad), in(94, ad), in(104, ad), in(109, ad), in(114, ad), in(123, ad), in(133, ad), in(144, ad), in(147, ad), in(154, ad), in(164, ad), in(169, ad), in(182, ad), in(191, ad), in(194, ad), in(203, ad), in(216, ad), in(221, ad), in(231, ad), in(238, ad), in(241, ad), in(252, ad), in(264, ad), in(269, ad), in(274, ad), in(283, ad), in(289, ad), in(300, ad), in(311, ad), in(318, ad), in(323, ad), in(330, ad), in(341, ad), in(352, ad), in(358, ad), in(367, ad), in(372, ad), in(377, ad), in(7, ae), in(14, ae), in(17, ae), in(28, ae), in(34, ae), in(43, ae), in(56, ae), in(61, ae), in(68, ae), in(73, ae), in(86, ae), in(95, ae), in(101, ae), in(112, ae), in(115, ae), in(122, ae), in(136, ae), in(141, ae), in(146, ae), in(155, ae), in(161, ae), in(172, ae), in(183, ae), in(190, ae), in(195, ae), in(202, ae), in(213, ae), in(224, ae), in(230, ae), in(239, ae), in(244, ae), in(249, ae), in(261, ae), in(272, ae), in(275, ae), in(282, ae), in(292, ae), in(297, ae), in(310, ae), in(319, ae), in(322, ae), in(331, ae), in(344, ae), in(349, ae), in(359, ae), in(366, ae), in(369, ae), in(380, ae), in(8, af), in(13, af), in(18, af), in(27, af), in(33, af), in(44, af), in(55, af), in(62, af), in(67, af), in(74, af), in(85, af), in(96, af), in(102, af), in(111, af), in(116, af), in(121, af), in(135, af), in(142, af), in(145, af), in(156, af), in(162, af), in(171, af), in(184, af), in(189, af), in(196, af), in(201, af), in(214, af), in(223, af), in(229, af), in(240, af), in(243, af), in(250, af), in(262, af), in(271, af), in(276, af), in(281, af), in(291, af), in(298, af), in(309, af), in(320, af), in(321, af), in(332, af), in(343, af), in(350, af), in(360, af), in(365, af), in(370, af), in(379, af), in(1, ag), in(13, ag), in(20, ag), in(32, ag), in(39, ag), in(43, ag), in(54, ag), in(58, ag), in(71, ag), in(75, ag), in(86, ag), in(90, ag), in(97, ag), in(109, ag), in(116, ag), in(128, ag), in(136, ag), in(140, ag), in(149, ag), in(153, ag), in(162, ag), in(174, ag), in(179, ag), in(191, ag), in(194, ag), in(206, ag), in(211, ag), in(223, ag), in(232, ag), in(236, ag), in(245, ag), in(249, ag), in(262, ag), in(266, ag), in(279, ag), in(283, ag), in(292, ag), in(304, ag), in(305, ag), in(317, ag), in(324, ag), in(336, ag), in(337, ag), in(349, ag), in(358, ag), in(362, ag), in(375, ag), in(379, ag), in(2, ah), in(14, ah), in(19, ah), in(31, ah), in(40, ah), in(44, ah), in(53, ah), in(57, ah), in(72, ah), in(76, ah), in(85, ah), in(89, ah), in(98, ah), in(110, ah), in(115, ah), in(127, ah), in(135, ah), in(139, ah), in(150, ah), in(154, ah), in(161, ah), in(173, ah), in(180, ah), in(192, ah), in(193, ah), in(205, ah), in(212, ah), in(224, ah), in(231, ah), in(235, ah), in(246, ah), in(250, ah), in(261, ah), in(265, ah), in(280, ah), in(284, ah), in(291, ah), in(303, ah), in(306, ah), in(318, ah), in(323, ah), in(335, ah), in(338, ah), in(350, ah), in(357, ah), in(361, ah), in(376, ah), in(380, ah), in(3, ai), in(15, ai), in(18, ai), in(30, ai), in(37, ai), in(41, ai), in(56, ai), in(60, ai), in(69, ai), in(73, ai), in(88, ai), in(92, ai), in(99, ai), in(111, ai), in(114, ai), in(126, ai), in(134, ai), in(138, ai), in(151, ai), in(155, ai), in(164, ai), in(176, ai), in(177, ai), in(189, ai), in(196, ai), in(208, ai), in(209, ai), in(221, ai), in(230, ai), in(234, ai), in(247, ai), in(251, ai), in(264, ai), in(268, ai), in(277, ai), in(281, ai), in(290, ai), in(302, ai), in(307, ai), in(319, ai), in(322, ai), in(334, ai), in(339, ai), in(351, ai), in(360, ai), in(364, ai), in(373, ai), in(377, ai), in(4, aj), in(16, aj), in(17, aj), in(29, aj), in(38, aj), in(42, aj), in(55, aj), in(59, aj), in(70, aj), in(74, aj), in(87, aj), in(91, aj), in(100, aj), in(112, aj), in(113, aj), in(125, aj), in(133, aj), in(137, aj), in(152, aj), in(156, aj), in(163, aj), in(175, aj), in(178, aj), in(190, aj), in(195, aj), in(207, aj), in(210, aj), in(222, aj), in(229, aj), in(233, aj), in(248, aj), in(252, aj), in(263, aj), in(267, aj), in(278, aj), in(282, aj), in(289, aj), in(301, aj), in(308, aj), in(320, aj), in(321, aj), in(333, aj), in(340, aj), in(352, aj), in(359, aj), in(363, aj), in(374, aj), in(378, aj), in(5, ak), in(9, ak), in(24, ak), in(28, ak), in(35, ak), in(47, ak), in(50, ak), in(62, ak), in(67, ak), in(79, ak), in(82, ak), in(94, ak), in(101, ak), in(105, ak), in(120, ak), in(124, ak), in(132, ak), in(144, ak), in(145, ak), in(157, ak), in(166, ak), in(170, ak), in(183, ak), in(187, ak), in(198, ak), in(202, ak), in(215, ak), in(219, ak), in(228, ak), in(240, ak), in(241, ak), in(253, ak), in(258, ak), in(270, ak), in(275, ak), in(287, ak), in(296, ak), in(300, ak), in(309, ak), in(313, ak), in(328, ak), in(332, ak), in(341, ak), in(345, ak), in(354, ak), in(366, ak), in(371, ak), in(383, ak), in(6, al), in(10, al), in(23, al), in(27, al), in(36, al), in(48, al), in(49, al), in(61, al), in(68, al), in(80, al), in(81, al), in(93, al), in(102, al), in(106, al), in(119, al), in(123, al), in(131, al), in(143, al), in(146, al), in(158, al), in(165, al), in(169, al), in(184, al), in(188, al), in(197, al), in(201, al), in(216, al), in(220, al), in(227, al), in(239, al), in(242, al), in(254, al), in(257, al), in(269, al), in(276, al), in(288, al), in(295, al), in(299, al), in(310, al), in(314, al), in(327, al), in(331, al), in(342, al), in(346, al), in(353, al), in(365, al), in(372, al), in(384, al), in(7, am), in(11, am), in(22, am), in(26, am), in(33, am), in(45, am), in(52, am), in(64, am), in(65, am), in(77, am), in(84, am), in(96, am), in(103, am), in(107, am), in(118, am), in(122, am), in(130, am), in(142, am), in(147, am), in(159, am), in(168, am), in(172, am), in(181, am), in(185, am), in(200, am), in(204, am), in(213, am), in(217, am), in(226, am), in(238, am), in(243, am), in(255, am), in(260, am), in(272, am), in(273, am), in(285, am), in(294, am), in(298, am), in(311, am), in(315, am), in(326, am), in(330, am), in(343, am), in(347, am), in(356, am), in(368, am), in(369, am), in(381, am), in(8, an), in(12, an), in(21, an), in(25, an), in(34, an), in(46, an), in(51, an), in(63, an), in(66, an), in(78, an), in(83, an), in(95, an), in(104, an), in(108, an), in(117, an), in(121, an), in(129, an), in(141, an), in(148, an), in(160, an), in(167, an), in(171, an), in(182, an), in(186, an), in(199, an), in(203, an), in(214, an), in(218, an), in(225, an), in(237, an), in(244, an), in(256, an), in(259, an), in(271, an), in(274, an), in(286, an), in(293, an), in(297, an), in(312, an), in(316, an), in(325, an), in(329, an), in(344, an), in(348, an), in(355, an), in(367, an), in(370, an), in(382, an), in(1, ao), in(14, ao), in(18, ao), in(29, ao), in(35, ao), in(48, ao), in(52, ao), in(63, ao), in(72, ao), in(75, ao), in(87, ao), in(92, ao), in(102, ao), in(105, ao), in(117, ao), in(122, ao), in(134, ao), in(137, ao), in(149, ao), in(154, ao), in(168, ao), in(171, ao), in(183, ao), in(188, ao), in(195, ao), in(208, ao), in(212, ao), in(223, ao), in(225, ao), in(238, ao), in(242, ao), in(253, ao), in(258, ao), in(269, ao), in(273, ao), in(286, ao), in(292, ao), in(303, ao), in(307, ao), in(320, ao), in(327, ao), in(332, ao), in(344, ao), in(347, ao), in(357, ao), in(362, ao), in(374, ao), in(377, ao), in(2, ap), in(13, ap), in(17, ap), in(30, ap), in(36, ap), in(47, ap), in(51, ap), in(64, ap), in(71, ap), in(76, ap), in(88, ap), in(91, ap), in(101, ap), in(106, ap), in(118, ap), in(121, ap), in(133, ap), in(138, ap), in(150, ap), in(153, ap), in(167, ap), in(172, ap), in(184, ap), in(187, ap), in(196, ap), in(207, ap), in(211, ap), in(224, ap), in(226, ap), in(237, ap), in(241, ap), in(254, ap), in(257, ap), in(270, ap), in(274, ap), in(285, ap), in(291, ap), in(304, ap), in(308, ap), in(319, ap), in(328, ap), in(331, ap), in(343, ap), in(348, ap), in(358, ap), in(361, ap), in(373, ap), in(378, ap), in(3, aq), in(16, aq), in(20, aq), in(31, aq), in(33, aq), in(46, aq), in(50, aq), in(61, aq), in(70, aq), in(73, aq), in(85, aq), in(90, aq), in(104, aq), in(107, aq), in(119, aq), in(124, aq), in(136, aq), in(139, aq), in(151, aq), in(156, aq), in(166, aq), in(169, aq), in(181, aq), in(186, aq), in(193, aq), in(206, aq), in(210, aq), in(221, aq), in(227, aq), in(240, aq), in(244, aq), in(255, aq), in(260, aq), in(271, aq), in(275, aq), in(288, aq), in(290, aq), in(301, aq), in(305, aq), in(318, aq), in(325, aq), in(330, aq), in(342, aq), in(345, aq), in(359, aq), in(364, aq), in(376, aq), in(379, aq), in(4, ar), in(15, ar), in(19, ar), in(32, ar), in(34, ar), in(45, ar), in(49, ar), in(62, ar), in(69, ar), in(74, ar), in(86, ar), in(89, ar), in(103, ar), in(108, ar), in(120, ar), in(123, ar), in(135, ar), in(140, ar), in(152, ar), in(155, ar), in(165, ar), in(170, ar), in(182, ar), in(185, ar), in(194, ar), in(205, ar), in(209, ar), in(222, ar), in(228, ar), in(239, ar), in(243, ar), in(256, ar), in(259, ar), in(272, ar), in(276, ar), in(287, ar), in(289, ar), in(302, ar), in(306, ar), in(317, ar), in(326, ar), in(329, ar), in(341, ar), in(346, ar), in(360, ar), in(363, ar), in(375, ar), in(380, ar), in(5, as), in(10, as), in(22, as), in(25, as), in(39, as), in(44, as), in(56, as), in(59, as), in(68, as), in(79, as), in(83, as), in(96, as), in(98, as), in(109, as), in(113, as), in(126, as), in(130, as), in(141, as), in(145, as), in(158, as), in(164, as), in(175, as), in(179, as), in(192, as), in(199, as), in(204, as), in(216, as), in(219, as), in(229, as), in(234, as), in(246, as), in(249, as), in(262, as), in(265, as), in(277, as), in(282, as), in(296, as), in(299, as), in(311, as), in(316, as), in(323, as), in(336, as), in(340, as), in(351, as), in(353, as), in(366, as), in(370, as), in(381, as), in(6, at), in(9, at), in(21, at), in(26, at), in(40, at), in(43, at), in(55, at), in(60, at), in(67, at), in(80, at), in(84, at), in(95, at), in(97, at), in(110, at), in(114, at), in(125, at), in(129, at), in(142, at), in(146, at), in(157, at), in(163, at), in(176, at), in(180, at), in(191, at), in(200, at), in(203, at), in(215, at), in(220, at), in(230, at), in(233, at), in(245, at), in(250, at), in(261, at), in(266, at), in(278, at), in(281, at), in(295, at), in(300, at), in(312, at), in(315, at), in(324, at), in(335, at), in(339, at), in(352, at), in(354, at), in(365, at), in(369, at), in(382, at), in(7, au), in(12, au), in(24, au), in(27, au), in(37, au), in(42, au), in(54, au), in(57, au), in(66, au), in(77, au), in(81, au), in(94, au), in(100, au), in(111, au), in(115, au), in(128, au), in(132, au), in(143, au), in(147, au), in(160, au), in(162, au), in(173, au), in(177, au), in(190, au), in(197, au), in(202, au), in(214, au), in(217, au), in(231, au), in(236, au), in(248, au), in(251, au), in(264, au), in(267, au), in(279, au), in(284, au), in(294, au), in(297, au), in(309, au), in(314, au), in(321, au), in(334, au), in(338, au), in(349, au), in(355, au), in(368, au), in(372, au), in(383, au), in(8, av), in(11, av), in(23, av), in(28, av), in(38, av), in(41, av), in(53, av), in(58, av), in(65, av), in(78, av), in(82, av), in(93, av), in(99, av), in(112, av), in(116, av), in(127, av), in(131, av), in(144, av), in(148, av), in(159, av), in(161, av), in(174, av), in(178, av), in(189, av), in(198, av), in(201, av), in(213, av), in(218, av), in(232, av), in(235, av), in(247, av), in(252, av), in(263, av), in(268, av), in(280, av), in(283, av), in(293, av), in(298, av), in(310, av), in(313, av), in(322, av), in(333, av), in(337, av), in(350, av), in(356, av), in(367, av), in(371, av), in(384, av)])] ).