Add benchmark result [fd-pb-e1-sh | ipc-2000 | elevator-strips-simple-typed | 51]
This commit is contained in:
parent
c97336db09
commit
6dabe71e07
40
fd-pb-e1-sh/ipc-2000_elevator-strips-simple-typed_51.env
Normal file
40
fd-pb-e1-sh/ipc-2000_elevator-strips-simple-typed_51.env
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
command:
|
||||||
|
- timeout
|
||||||
|
- -m=8000000
|
||||||
|
- -t=900
|
||||||
|
- python3
|
||||||
|
- /home/pluehne/Documents/ASP/plasp-javier/encodings/planner/runplanner.py
|
||||||
|
- --domain=/home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/domain.pddl
|
||||||
|
- /home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/instances/instance-51.pddl
|
||||||
|
- --stats
|
||||||
|
- --verbose
|
||||||
|
- --print-call
|
||||||
|
- --translate
|
||||||
|
- -B 0.9
|
||||||
|
- --parallel=1
|
||||||
|
- --shallow
|
||||||
|
configuration:
|
||||||
|
id: fd-pb-e1-sh
|
||||||
|
instanceSets:
|
||||||
|
- lpnmr-hard-instances
|
||||||
|
options:
|
||||||
|
- --stats
|
||||||
|
- --verbose
|
||||||
|
- --print-call
|
||||||
|
- --translate
|
||||||
|
- -B 0.9
|
||||||
|
- --parallel=1
|
||||||
|
- --shallow
|
||||||
|
exitCode: 0
|
||||||
|
instance:
|
||||||
|
domain: elevator-strips-simple-typed
|
||||||
|
instance: 51
|
||||||
|
ipc: ipc-2000
|
||||||
|
versions:
|
||||||
|
clingo: 5.2.2
|
||||||
|
fastDownward: 10997:847cdf0069cab0c8841a9958e783d1a7340fe2e9 (2017-11-02 15:10 +0100)
|
||||||
|
planner: 517f2c0422a36582df17ecebb08e879b170cdfe2 (2017-11-21 02:23:06 +0100)
|
||||||
|
plasp: 3.1.1
|
||||||
|
python: 3.6.3
|
||||||
|
workingDirectory: /home/pluehne/Documents/ASP/plasp-javier/encodings/planner
|
||||||
|
|
33
fd-pb-e1-sh/ipc-2000_elevator-strips-simple-typed_51.err
Normal file
33
fd-pb-e1-sh/ipc-2000_elevator-strips-simple-typed_51.err
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# configuration: {'id': 'fd-pb-e1-sh', 'options': ['--stats', '--verbose', '--print-call', '--translate', '-B 0.9', '--parallel=1', '--shallow'], 'instanceSets': ['lpnmr-hard-instances']}
|
||||||
|
# instance: {'ipc': 'ipc-2000', 'domain': 'elevator-strips-simple-typed', 'instance': 51}
|
||||||
|
# command: ['timeout', '-m=8000000', '-t=900', 'python3', '/home/pluehne/Documents/ASP/plasp-javier/encodings/planner/runplanner.py', '--domain=/home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/domain.pddl', '/home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/instances/instance-51.pddl', '--stats', '--verbose', '--print-call', '--translate', '-B 0.9', '--parallel=1', '--shallow']
|
||||||
|
# working directory: /home/pluehne/Documents/ASP/plasp-javier/encodings/planner
|
||||||
|
# exit code: 0
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp:13:4-34: info: atom does not occur in any rule head:
|
||||||
|
requires(feature(actionCosts))
|
||||||
|
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp:14:4-33: info: atom does not occur in any rule head:
|
||||||
|
requires(feature(axiomRules))
|
||||||
|
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp:15:4-41: info: atom does not occur in any rule head:
|
||||||
|
requires(feature(conditionalEffects))
|
||||||
|
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:66:15-28: info: atom does not occur in any rule head:
|
||||||
|
mutexGroup(G)
|
||||||
|
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:66:30-45: info: atom does not occur in any rule head:
|
||||||
|
contains(G,X,V)
|
||||||
|
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:67:15-28: info: atom does not occur in any rule head:
|
||||||
|
mutexGroup(G)
|
||||||
|
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:74:41-56: info: atom does not occur in any rule head:
|
||||||
|
contains(G,X,V)
|
||||||
|
|
||||||
|
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:84:41-56: info: atom does not occur in any rule head:
|
||||||
|
contains(G,X,V)
|
||||||
|
|
||||||
|
# planner call: /home/wv/bin/linux/64/fast-downward/fast-downward.py --translate --build=release64 /home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/domain.pddl /home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/instances/instance-51.pddl && plasp-3.1.1 translate --parsing-mode=compatibility output.sas | /home/pluehne/Documents/ASP/plasp-javier/encodings/planner/planner.py - /home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp /home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp --stats --verbose -B 0.9 --query-at-last --check-at-last --forbid-actions --force-actions -c planner_on=1 -c _shallow=1 -c _closure=3 -c _parallel=1
|
||||||
|
FINISHED CPU 8.71 MEM 30288 MAXMEM 108808 STALE 1 MAXMEM_RSS 54008
|
||||||
|
<time name="ALL">8580</time>
|
||||||
|
|
250
fd-pb-e1-sh/ipc-2000_elevator-strips-simple-typed_51.out
Normal file
250
fd-pb-e1-sh/ipc-2000_elevator-strips-simple-typed_51.out
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
INFO Running translator.
|
||||||
|
INFO translator input: ['/home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/domain.pddl', '/home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/instances/instance-51.pddl']
|
||||||
|
INFO translator arguments: []
|
||||||
|
INFO translator time limit: None
|
||||||
|
INFO translator memory limit: None
|
||||||
|
INFO callstring: /home/pluehne/.usr/bin/python /home/wv/bin/linux/64/fast-downward-10997/builds/release64/bin/translate/translate.py /home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/domain.pddl /home/pluehne/Documents/ASP/pddl-instances/ipc-2000/domains/elevator-strips-simple-typed/instances/instance-51.pddl
|
||||||
|
Parsing...
|
||||||
|
Parsing: [0.020s CPU, 0.032s wall-clock]
|
||||||
|
Normalizing task... [0.010s CPU, 0.001s wall-clock]
|
||||||
|
Instantiating...
|
||||||
|
Generating Datalog program... [0.010s CPU, 0.009s wall-clock]
|
||||||
|
Normalizing Datalog program...
|
||||||
|
Normalizing Datalog program: [0.000s CPU, 0.012s wall-clock]
|
||||||
|
Preparing model... [0.040s CPU, 0.029s wall-clock]
|
||||||
|
Generated 18 rules.
|
||||||
|
Computing model... [0.090s CPU, 0.098s wall-clock]
|
||||||
|
881 relevant atoms
|
||||||
|
583 auxiliary atoms
|
||||||
|
1464 final queue length
|
||||||
|
1905 total queue pushes
|
||||||
|
Completing instantiation... [0.080s CPU, 0.080s wall-clock]
|
||||||
|
Instantiating: [0.230s CPU, 0.231s wall-clock]
|
||||||
|
Computing fact groups...
|
||||||
|
Finding invariants...
|
||||||
|
6 initial candidates
|
||||||
|
Finding invariants: [0.000s CPU, 0.004s wall-clock]
|
||||||
|
Checking invariant weight... [0.000s CPU, 0.001s wall-clock]
|
||||||
|
Instantiating groups... [0.000s CPU, 0.000s wall-clock]
|
||||||
|
Collecting mutex groups... [0.000s CPU, 0.000s wall-clock]
|
||||||
|
Choosing groups...
|
||||||
|
22 uncovered facts
|
||||||
|
Choosing groups: [0.000s CPU, 0.000s wall-clock]
|
||||||
|
Building translation key... [0.000s CPU, 0.001s wall-clock]
|
||||||
|
Computing fact groups: [0.000s CPU, 0.009s wall-clock]
|
||||||
|
Building STRIPS to SAS dictionary... [0.000s CPU, 0.000s wall-clock]
|
||||||
|
Building dictionary for full mutex groups... [0.000s CPU, 0.000s wall-clock]
|
||||||
|
Building mutex information...
|
||||||
|
Building mutex information: [0.000s CPU, 0.000s wall-clock]
|
||||||
|
Translating task...
|
||||||
|
Processing axioms...
|
||||||
|
Simplifying axioms... [0.000s CPU, 0.000s wall-clock]
|
||||||
|
Processing axioms: [0.010s CPU, 0.004s wall-clock]
|
||||||
|
Translating task: [0.080s CPU, 0.074s wall-clock]
|
||||||
|
11 effect conditions simplified
|
||||||
|
0 implied preconditions added
|
||||||
|
Detecting unreachable propositions...
|
||||||
|
0 operators removed
|
||||||
|
0 axioms removed
|
||||||
|
1 propositions removed
|
||||||
|
Detecting unreachable propositions: [0.040s CPU, 0.046s wall-clock]
|
||||||
|
Reordering and filtering variables...
|
||||||
|
23 of 23 variables necessary.
|
||||||
|
0 of 1 mutex groups necessary.
|
||||||
|
484 of 484 operators necessary.
|
||||||
|
0 of 0 axiom rules necessary.
|
||||||
|
Reordering and filtering variables: [0.020s CPU, 0.011s wall-clock]
|
||||||
|
Translator variables: 23
|
||||||
|
Translator derived variables: 0
|
||||||
|
Translator facts: 66
|
||||||
|
Translator goal facts: 11
|
||||||
|
Translator mutex groups: 0
|
||||||
|
Translator total mutex groups size: 0
|
||||||
|
Translator operators: 484
|
||||||
|
Translator axioms: 0
|
||||||
|
Translator task size: 1574
|
||||||
|
Translator peak memory: 34136 KB
|
||||||
|
Writing output... [0.030s CPU, 0.037s wall-clock]
|
||||||
|
Done! [0.430s CPU, 0.446s wall-clock]
|
||||||
|
planner.py version 0.0.1
|
||||||
|
|
||||||
|
Time: 0.08s
|
||||||
|
Memory: 49MB
|
||||||
|
|
||||||
|
Iteration 1
|
||||||
|
Queue: [(0,0,0,True), (1,5,0,True), (2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||||
|
Grounded Until: 0
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.00s
|
||||||
|
Memory: 49MB (+0MB)
|
||||||
|
UNSAT
|
||||||
|
Iteration Time: 0.00s
|
||||||
|
|
||||||
|
Iteration 2
|
||||||
|
Queue: [(1,5,0,True), (2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||||
|
Grounded Until: 0
|
||||||
|
Grounding... [('step', [1]), ('step', [2]), ('step', [3]), ('step', [4]), ('step', [5]), ('check', [5])]
|
||||||
|
Grounding Time: 0.04s
|
||||||
|
Memory: 50MB (+1MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.00s
|
||||||
|
Memory: 51MB (+1MB)
|
||||||
|
UNSAT
|
||||||
|
Iteration Time: 0.05s
|
||||||
|
|
||||||
|
Iteration 3
|
||||||
|
Queue: [(2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||||
|
Grounded Until: 5
|
||||||
|
Grounding... [('step', [6]), ('step', [7]), ('step', [8]), ('step', [9]), ('step', [10]), ('check', [10])]
|
||||||
|
Grounding Time: 0.03s
|
||||||
|
Memory: 52MB (+1MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.01s
|
||||||
|
Memory: 53MB (+1MB)
|
||||||
|
UNSAT
|
||||||
|
Iteration Time: 0.05s
|
||||||
|
|
||||||
|
Iteration 4
|
||||||
|
Queue: [(3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||||
|
Grounded Until: 10
|
||||||
|
Grounding... [('step', [11]), ('step', [12]), ('step', [13]), ('step', [14]), ('step', [15]), ('check', [15])]
|
||||||
|
Grounding Time: 0.03s
|
||||||
|
Memory: 55MB (+2MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.17s
|
||||||
|
Memory: 57MB (+2MB)
|
||||||
|
UNSAT
|
||||||
|
Iteration Time: 0.22s
|
||||||
|
|
||||||
|
Iteration 5
|
||||||
|
Queue: [(4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||||
|
Grounded Until: 15
|
||||||
|
Grounding... [('step', [16]), ('step', [17]), ('step', [18]), ('step', [19]), ('step', [20]), ('check', [20])]
|
||||||
|
Grounding Time: 0.03s
|
||||||
|
Memory: 58MB (+1MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 1.00s
|
||||||
|
Memory: 59MB (+1MB)
|
||||||
|
UNKNOWN
|
||||||
|
Iteration Time: 1.04s
|
||||||
|
|
||||||
|
Iteration 6
|
||||||
|
Queue: [(5,25,0,True), (6,30,0,True)]
|
||||||
|
Grounded Until: 20
|
||||||
|
Grounding... [('step', [21]), ('step', [22]), ('step', [23]), ('step', [24]), ('step', [25]), ('check', [25])]
|
||||||
|
Grounding Time: 0.03s
|
||||||
|
Memory: 60MB (+1MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.91s
|
||||||
|
Memory: 62MB (+2MB)
|
||||||
|
UNKNOWN
|
||||||
|
Iteration Time: 0.95s
|
||||||
|
|
||||||
|
Iteration 7
|
||||||
|
Queue: [(6,30,0,True)]
|
||||||
|
Grounded Until: 25
|
||||||
|
Grounding... [('step', [26]), ('step', [27]), ('step', [28]), ('step', [29]), ('step', [30]), ('check', [30])]
|
||||||
|
Grounding Time: 0.03s
|
||||||
|
Memory: 63MB (+1MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 1.11s
|
||||||
|
Memory: 64MB (+1MB)
|
||||||
|
UNKNOWN
|
||||||
|
Iteration Time: 1.15s
|
||||||
|
|
||||||
|
Iteration 8
|
||||||
|
Queue: [(4,20,1,True), (5,25,1,True), (6,30,1,True), (7,35,0,True), (8,40,0,True), (9,45,0,True), (10,50,0,True), (11,55,0,True), (12,60,0,True), (13,65,0,True), (14,70,0,True), (15,75,0,True), (16,80,0,True), (17,85,0,True)]
|
||||||
|
Grounded Until: 30
|
||||||
|
Blocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.58s
|
||||||
|
Memory: 65MB (+1MB)
|
||||||
|
UNKNOWN
|
||||||
|
Iteration Time: 0.58s
|
||||||
|
|
||||||
|
Iteration 9
|
||||||
|
Queue: [(5,25,1,True), (6,30,1,True), (7,35,0,True), (8,40,0,True), (9,45,0,True), (10,50,0,True), (11,55,0,True), (12,60,0,True), (13,65,0,True), (14,70,0,True), (15,75,0,True), (16,80,0,True), (17,85,0,True)]
|
||||||
|
Grounded Until: 30
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.77s
|
||||||
|
Memory: 65MB (+0MB)
|
||||||
|
UNKNOWN
|
||||||
|
Iteration Time: 0.77s
|
||||||
|
|
||||||
|
Iteration 10
|
||||||
|
Queue: [(6,30,1,True), (7,35,0,True), (8,40,0,True), (9,45,0,True), (10,50,0,True), (11,55,0,True), (12,60,0,True), (13,65,0,True), (14,70,0,True), (15,75,0,True), (16,80,0,True), (17,85,0,True)]
|
||||||
|
Grounded Until: 30
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 0.95s
|
||||||
|
Memory: 65MB (+0MB)
|
||||||
|
UNKNOWN
|
||||||
|
Iteration Time: 0.96s
|
||||||
|
|
||||||
|
Iteration 11
|
||||||
|
Queue: [(7,35,0,True), (8,40,0,True), (9,45,0,True), (10,50,0,True), (11,55,0,True), (12,60,0,True), (13,65,0,True), (14,70,0,True), (15,75,0,True), (16,80,0,True), (17,85,0,True)]
|
||||||
|
Grounded Until: 30
|
||||||
|
Grounding... [('step', [31]), ('step', [32]), ('step', [33]), ('step', [34]), ('step', [35]), ('check', [35])]
|
||||||
|
Grounding Time: 0.04s
|
||||||
|
Memory: 67MB (+2MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Solving Time: 1.09s
|
||||||
|
Memory: 70MB (+3MB)
|
||||||
|
UNKNOWN
|
||||||
|
Iteration Time: 1.15s
|
||||||
|
|
||||||
|
Iteration 12
|
||||||
|
Queue: [(8,40,0,True), (9,45,0,True), (10,50,0,True), (11,55,0,True), (12,60,0,True), (13,65,0,True), (14,70,0,True), (15,75,0,True), (16,80,0,True), (17,85,0,True)]
|
||||||
|
Grounded Until: 35
|
||||||
|
Grounding... [('step', [36]), ('step', [37]), ('step', [38]), ('step', [39]), ('step', [40]), ('check', [40])]
|
||||||
|
Grounding Time: 0.03s
|
||||||
|
Memory: 70MB (+0MB)
|
||||||
|
Unblocking actions...
|
||||||
|
Solving...
|
||||||
|
Answer: 1
|
||||||
|
occurs(action(("board","f0","p3")),1) occurs(action(("up","f0","f17")),2) occurs(action(("board","f17","p1")),3) occurs(action(("down","f17","f8")),4) occurs(action(("board","f8","p5")),5) occurs(action(("up","f8","f13")),6) occurs(action(("depart","f13","p1")),7) occurs(action(("up","f13","f16")),8) occurs(action(("board","f16","p6")),9) occurs(action(("down","f16","f7")),10) occurs(action(("depart","f7","p5")),11) occurs(action(("board","f7","p7")),11) occurs(action(("up","f7","f20")),12) occurs(action(("board","f20","p8")),13) occurs(action(("down","f20","f3")),14) occurs(action(("depart","f3","p6")),15) occurs(action(("board","f3","p4")),15) occurs(action(("up","f3","f8")),16) occurs(action(("board","f8","p5")),17) occurs(action(("down","f8","f1")),18) occurs(action(("depart","f1","p4")),19) occurs(action(("board","f1","p2")),19) occurs(action(("up","f1","f13")),20) occurs(action(("up","f13","f15")),21) occurs(action(("depart","f15","p2")),22) occurs(action(("down","f15","f2")),23) occurs(action(("board","f2","p9")),24) occurs(action(("up","f2","f21")),25) occurs(action(("board","f21","p10")),26) occurs(action(("down","f21","f4")),27) occurs(action(("depart","f4","p7")),28) occurs(action(("up","f4","f17")),29) occurs(action(("board","f17","p0")),30) occurs(action(("board","f17","p1")),30) occurs(action(("board","f17","p0")),31) occurs(action(("board","f17","p1")),31) occurs(action(("down","f17","f15")),32) occurs(action(("down","f15","f6")),33) occurs(action(("depart","f6","p3")),34) occurs(action(("up","f6","f10")),35) occurs(action(("depart","f10","p0")),36) occurs(action(("depart","f10","p8")),36) occurs(action(("down","f10","f8")),37) occurs(action(("depart","f8","p10")),38) occurs(action(("down","f8","f0")),39) occurs(action(("depart","f0","p9")),40)
|
||||||
|
Solving Time: 0.09s
|
||||||
|
Memory: 72MB (+2MB)
|
||||||
|
SAT
|
||||||
|
SATISFIABLE
|
||||||
|
|
||||||
|
Models : 1+
|
||||||
|
Calls : 12
|
||||||
|
Time : 7.130s (Solving: 6.66s 1st Model: 0.09s Unsat: 0.18s)
|
||||||
|
CPU Time : 7.140s
|
||||||
|
|
||||||
|
Choices : 93187
|
||||||
|
Conflicts : 61878 (Analyzed: 61875)
|
||||||
|
Restarts : 727 (Average: 85.11 Last: 84)
|
||||||
|
Model-Level : 84.0
|
||||||
|
Problems : 12 (Average Length: 24.50 Splits: 0)
|
||||||
|
Lemmas : 61875 (Deleted: 46911)
|
||||||
|
Binary : 411 (Ratio: 0.66%)
|
||||||
|
Ternary : 2348 (Ratio: 3.79%)
|
||||||
|
Conflict : 61875 (Average Length: 14.4 Ratio: 100.00%)
|
||||||
|
Loop : 0 (Average Length: 0.0 Ratio: 0.00%)
|
||||||
|
Other : 0 (Average Length: 0.0 Ratio: 0.00%)
|
||||||
|
Backjumps : 61875 (Average: 1.37 Max: 56 Sum: 84676)
|
||||||
|
Executed : 61857 (Average: 1.37 Max: 56 Sum: 84478 Ratio: 99.77%)
|
||||||
|
Bounded : 18 (Average: 11.00 Max: 32 Sum: 198 Ratio: 0.23%)
|
||||||
|
|
||||||
|
Rules : 6199
|
||||||
|
Atoms : 6199
|
||||||
|
Bodies : 1 (Original: 0)
|
||||||
|
Tight : Yes
|
||||||
|
Variables : 23892 (Eliminated: 0 Frozen: 18959)
|
||||||
|
Constraints : 120202 (Binary: 97.0% Ternary: 2.1% Other: 0.9%)
|
||||||
|
|
||||||
|
Memory Peak : 74MB
|
||||||
|
Max. Length : 40 steps
|
||||||
|
Sol. Length : 40 steps
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user