Skip to content

Commit 8a7b7b9

Browse files
committed
Add day 1-4
1 parent 9a2b415 commit 8a7b7b9

File tree

5 files changed

+356
-0
lines changed

5 files changed

+356
-0
lines changed

2024/day1/main2.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
def solution(lines: list[str]):
2+
ret = 0
3+
n1s, n2s = [], []
4+
for line in lines:
5+
n1, _, n2 = line.partition(' ')
6+
n1s.append(int(n1))
7+
n2s.append(int(n2))
8+
for i in range(len(n1s)):
9+
ret += n1s[i] * n2s.count(n1s[i])
10+
return ret
11+
12+
13+
# data = '''3 4
14+
# 4 3
15+
# 2 5
16+
# 1 3
17+
# 3 9
18+
# 3 3
19+
# '''.split('\n')
20+
21+
data = open('input.txt', 'r').read().split('\n')
22+
23+
data = [datum for datum in data if datum != '']
24+
25+
print(solution(data))

2024/day2/main2.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
def is_safe(nums):
2+
safe = True
3+
inc = nums[0] <= nums[-1]
4+
for i in range(0, len(nums) - 1):
5+
diff = abs(nums[i + 1] - nums[i])
6+
if not (1 <= diff <= 3):
7+
safe = False
8+
break
9+
if inc and nums[i + 1] < nums[i] or (not inc and nums[i + 1] > nums[i]):
10+
safe = False
11+
break
12+
return safe
13+
14+
15+
def solution(lines: list[str]):
16+
ret = 0
17+
for line in lines:
18+
nums = [int(i) for i in line.split()]
19+
safe = is_safe(nums)
20+
if not safe:
21+
for i in range(len(nums)):
22+
safe = is_safe(nums[:i] + nums[i+1:])
23+
if safe:
24+
break
25+
if safe:
26+
ret += 1
27+
return ret
28+
29+
30+
# data = '''7 6 4 2 1
31+
# 1 2 7 8 9
32+
# 9 7 6 2 1
33+
# 1 3 2 4 5
34+
# 8 6 4 4 1
35+
# 1 3 6 7 9
36+
# '''.split('\n')
37+
38+
data = open('input.txt', 'r').read().split('\n')
39+
40+
data = [datum for datum in data if datum != '']
41+
42+
print(solution(data))

2024/day3/main2.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import re
2+
3+
mul = re.compile(r'mul\((\d+),(\d+)\)')
4+
dont = re.compile(r"don't\(\)")
5+
do = re.compile(r"do\(\)")
6+
7+
8+
def solution(lines: list[str]):
9+
ret = 0
10+
line = ''.join(lines)
11+
while line:
12+
mulmatch = mul.search(line)
13+
dontmatch = dont.search(line)
14+
domatch = do.search(line)
15+
if not mulmatch:
16+
break
17+
if dontmatch:
18+
if dontmatch.span(0)[0] < mulmatch.span(0)[0] and (not domatch or (dontmatch.span(0)[0] < domatch.span(0)[0] < mulmatch.span(0)[0])):
19+
if domatch:
20+
line = line[domatch.span(0)[1]:]
21+
else:
22+
break
23+
else:
24+
ret += int(mulmatch.group(1)) * int(mulmatch.group(2))
25+
line = line[mulmatch.span(0)[1]:]
26+
else:
27+
ret += int(mulmatch.group(1)) * int(mulmatch.group(2))
28+
line = line[mulmatch.span(0)[1]:]
29+
30+
return ret
31+
32+
33+
# data = '''xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))'''.split('\n')
34+
35+
data = open('input.txt', 'r').read().split('\n')
36+
37+
data = [datum for datum in data if datum != '']
38+
39+
print(solution(data))

2024/day4/main1.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
def solution(lines: list[str]):
2+
ret = 0
3+
for i in range(len(lines)):
4+
for j in range(len(lines[i])):
5+
if i >= 3 and j < len(lines[i]) - 3 and lines[i][j] == 'X' and lines[i-1][j+1] == 'M' and lines[i-2][j+2] == 'A' and lines[i-3][j+3] == 'S':
6+
ret += 1
7+
if j < len(lines[i]) - 3 and lines[i][j] == 'X' and lines[i][j+1] == 'M' and lines[i][j+2] == 'A' and lines[i][j+3] == 'S':
8+
ret += 1
9+
if i < len(lines) - 3 and j < len(lines[i]) - 3 and lines[i][j] == 'X' and lines[i+1][j+1] == 'M' and lines[i+2][j+2] == 'A' and lines[i+3][j+3] == 'S':
10+
ret += 1
11+
if i < len(lines) - 3 and lines[i][j] == 'X' and lines[i+1][j] == 'M' and lines[i+2][j] == 'A' and lines[i+3][j] == 'S':
12+
ret += 1
13+
if i < len(lines) - 3 and j >= 3 and lines[i][j] == 'X' and lines[i+1][j-1] == 'M' and lines[i+2][j-2] == 'A' and lines[i+3][j-3] == 'S':
14+
ret += 1
15+
if j >= 3 and lines[i][j] == 'X' and lines[i][j-1] == 'M' and lines[i][j-2] == 'A' and lines[i][j-3] == 'S':
16+
ret += 1
17+
if i >= 3 and j >= 3 and lines[i][j] == 'X' and lines[i-1][j-1] == 'M' and lines[i-2][j-2] == 'A' and lines[i-3][j-3] == 'S':
18+
ret += 1
19+
if i >= 3 and lines[i][j] == 'X' and lines[i-1][j] == 'M' and lines[i-2][j] == 'A' and lines[i-3][j] == 'S':
20+
ret += 1
21+
# check up right
22+
# check right
23+
# check down right
24+
# check down
25+
...
26+
...
27+
return ret
28+
29+
# data = '''MMMSXXMASM
30+
# MSAMXMSMSA
31+
# AMXSXMAAMM
32+
# MSAMASMSMX
33+
# XMASAMXAMM
34+
# XXAMMXXAMA
35+
# SMSMSASXSS
36+
# SAXAMASAAA
37+
# MAMMMXMMMM
38+
# MXMXAXMASX
39+
# '''.split('\n')
40+
41+
# data = '''....XXMAS.
42+
# .SAMXMS...
43+
# ...S..A...
44+
# ..A.A.MS.X
45+
# XMASAMX.MM
46+
# X.....XA.A
47+
# S.S.S.S.SS
48+
# .A.A.A.A.A
49+
# ..M.M.M.MM
50+
# .X.X.XMASX
51+
# '''.split('\n')
52+
53+
data = open('input.txt', 'r').read().split('\n')
54+
55+
data = [datum for datum in data if datum != '']
56+
57+
print(solution(data))

2024/day4/main2.py

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
def solution(lines: list[str]):
2+
ret = 0
3+
lastret = -1
4+
coords = []
5+
for i in range(len(lines)):
6+
for j in range(len(lines[i])):
7+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
8+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
9+
# ret += 1
10+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
11+
# ret += 1
12+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
13+
ret += 1
14+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
15+
# ret += 1
16+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
17+
# ret += 1
18+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
19+
# ret += 1
20+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
21+
ret += 1
22+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
23+
# ret += 1
24+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
25+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
26+
# ret += 1
27+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
28+
# ret += 1
29+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
30+
# ret += 1
31+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
32+
# ret += 1
33+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
34+
# ret += 1
35+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
36+
# ret += 1
37+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
38+
# ret += 1
39+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
40+
# ret += 1
41+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
42+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
43+
ret += 1
44+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
45+
# ret += 1
46+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
47+
# ret += 1
48+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
49+
# ret += 1
50+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
51+
ret += 1
52+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
53+
# ret += 1
54+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
55+
# ret += 1
56+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
57+
# ret += 1
58+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
59+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
60+
# ret += 1
61+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
62+
# ret += 1
63+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
64+
# ret += 1
65+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
66+
# ret += 1
67+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
68+
# ret += 1
69+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
70+
# ret += 1
71+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
72+
# ret += 1
73+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
74+
# ret += 1
75+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
76+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
77+
# ret += 1
78+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
79+
# ret += 1
80+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
81+
ret += 1
82+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
83+
# ret += 1
84+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
85+
# ret += 1
86+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
87+
# ret += 1
88+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
89+
ret += 1
90+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
91+
# ret += 1
92+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
93+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
94+
# ret += 1
95+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
96+
# ret += 1
97+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
98+
# ret += 1
99+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
100+
# ret += 1
101+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
102+
# ret += 1
103+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
104+
# ret += 1
105+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
106+
# ret += 1
107+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
108+
# ret += 1
109+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
110+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
111+
ret += 1
112+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
113+
# ret += 1
114+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
115+
# ret += 1
116+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
117+
# ret += 1
118+
if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
119+
ret += 1
120+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
121+
# ret += 1
122+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
123+
# ret += 1
124+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
125+
# ret += 1
126+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
127+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j-1] == 'M' and lines[i][j] == 'A' and lines[i-1][j+1] == 'S':
128+
# ret += 1
129+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j-1] == 'M' and lines[i][j] == 'A' and lines[i][j+1] == 'S':
130+
# ret += 1
131+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j-1] == 'M' and lines[i][j] == 'A' and lines[i+1][j+1] == 'S':
132+
# ret += 1
133+
# if i >= 1 and i < len(lines) - 1 and lines[i-1][j] == 'M' and lines[i][j] == 'A' and lines[i+1][j] == 'S':
134+
# ret += 1
135+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i-1][j+1] == 'M' and lines[i][j] == 'A' and lines[i+1][j-1] == 'S':
136+
# ret += 1
137+
# if j >= 1 and j < len(lines[i]) - 1 and lines[i][j+1] == 'M' and lines[i][j] == 'A' and lines[i][j-1] == 'S' :
138+
# ret += 1
139+
# if i >= 1 and i < len(lines) - 1 and j >= 1 and j < len(lines[i]) - 1 and lines[i+1][j+1] == 'M' and lines[i][j] == 'A' and lines[i-1][j-1] == 'S':
140+
# ret += 1
141+
# if i >= 1 and i < len(lines) - 1 and lines[i+1][j] == 'M' and lines[i][j] == 'A' and lines[i-1][j] == 'S':
142+
# ret += 1
143+
# check up right
144+
# check right
145+
# check down right
146+
# check down
147+
...
148+
if ret > lastret != -1:
149+
coords.append((i, j))
150+
lastret = ret
151+
...
152+
print(coords)
153+
for i in range(len(lines)):
154+
for j in range(len(lines[i])):
155+
if (i, j) in coords:
156+
print('\033[31m', end='') # red
157+
print(lines[i][j] if lines[i][j] != 'X' else ' ', end='')
158+
if (i, j) in coords:
159+
print('\033[39m', end='') # reset
160+
print('\n', end='')
161+
162+
return len(coords)
163+
164+
# data = '''
165+
# .M.S......
166+
# ..A..MSMS.
167+
# .M.S.MAA..
168+
# ..A.ASMSM.
169+
# .M.S.M....
170+
# ..........
171+
# S.S.S.S.S.
172+
# .A.A.A.A..
173+
# M.M.M.M.M.
174+
# ..........
175+
# '''.split('\n')
176+
177+
# data = '''....XXMAS.
178+
# .SAMXMS...
179+
# ...S..A...
180+
# ..A.A.MS.X
181+
# XMASAMX.MM
182+
# X.....XA.A
183+
# S.S.S.S.SS
184+
# .A.A.A.A.A
185+
# ..M.M.M.MM
186+
# .X.X.XMASX
187+
# '''.split('\n')
188+
189+
data = open('input.txt', 'r').read().split('\n')
190+
191+
data = [datum for datum in data if datum != '']
192+
193+
print(solution(data))

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy