Trace number 3317524

Some explanations

A solver is run under the control of another program named runsolver. runsolver is in charge of imposing the CPU time limit and the memory limit to the solver. It also monitors some information about the process. The trace of the execution of a solver is divided into four (or five) parts:
  1. SOLVER DATA
    This is the output of the solver (stdout and stderr).
    Note that some very long lines in this section may be truncated by your web browser ! In such a case, you may want to use the "Download as text" link to get the trace as a text file.

    When the --timestamp option is passed to the runsolver program, each line output by the solver is prepended with a timestamp which indicates at what time the line was output by the solver. Times are relative to the start of the program, given in seconds. The first timestamp (if present) is estimated CPU time. The last timestamp is wall clock time.

    As some 'v lines' may be very long (sometimes several megabytes), the 'v line' output by your solver may be split on several lines to help limit the size of the trace recorded in the database. In any case, the exact output of your solver is preserved in a trace file.
  2. VERIFIER DATA
    The output of the solver is piped to a verifier program which will search a value line "v " and, if found, will check that the given interpretation satisfies all constraints.
  3. CONVERSION SCRIPT DATA (Optionnal)
    When a conversion script is used, this section shows the messages that were output by the conversion script.
  4. WATCHER DATA
    This is the informations gathered by the runsolver program. It first prints the different limits. There's a first limit on CPU time set to X seconds (see the parameters in the trace). After this time has ellapsed, runsolver sends a SIGTERM and 2 seconds later a SIGKILL to the solver. For safety, there's also another limit set to X+30 seconds which will send a SIGXPU to the solver. The last limit is on the virtual memory used by the process (see the parameters in the trace).
    Every ten seconds, the runsolver process fetches the content of /proc/loadavg, /proc/pid/stat and /proc/pid/statm (see man proc) and prints it as raw data. This is only recorded in case we need to investigate the behaviour of a solver. The memory used by the solver (vsize) is also given every ten seconds.
    When the solver exits, runsolver prints some informations such as status and time. CPU usage is the ratio CPU Time/Real Time.
  5. LAUNCHER DATA
    These informations are related to the script which will launch the solver. The most important informations are the command line given to the solver, the md5sum of the different files and the dump of the /proc/cpuinfo and /proc/meminfo which provides some useful information on the computer.

Solver answer on this benchmark

Solver NameAnswerCPU timeWall clock time
borg-sat 11.03.02-randomSAT 1.39379 1.15683

General information on the benchmark

Namerandom/medium/
unif-k7-r89-v90-c8010-S51928934-076.SATISFIABLE.cnf
MD5SUM398f9c2cc63f6285faba700796fc9dcc
Bench CategoryRANDOM (random instances)
Best result obtained on this benchmarkSAT
Best CPU time to get the best result obtained on this benchmark1.9837
Satisfiable
(Un)Satisfiability was proved
Number of variables90
Number of clauses8010
Sum of the clauses size56070
Maximum clause length7
Minimum clause length7
Number of clauses of size 10
Number of clauses of size 20
Number of clauses of size 30
Number of clauses of size 40
Number of clauses of size 50
Number of clauses of size over 58010

Solver Data

0.31/0.45	c INFO: loaded portfolio from HOME/etc/borg-mix+class.random.pickle
0.31/0.45	c INFO: solving HOME/instance-3317524-1304269950.cnf
0.31/0.45	c INFO: computing task features
0.39/0.50	c INFO: computed variable-clause graph statistics
0.39/0.51	c INFO: computed clause balance statistics
0.58/0.79	c INFO: computed variable balance statistics
0.78/0.90	c INFO: computed small-clause counts
0.78/0.90	c INFO: computed Horn-clause counts
0.78/0.91	c INFO: computed variable graph statistics
0.78/0.91	c INFO: collected features for HOME/instance-3317524-1304269950.cnf in 0.46 s
0.78/0.94	c INFO: running gnovelty+2@0 for 97 with 4799 remaining (b = 0.47)
0.78/0.97	c INFO: running gnovelty+2@0 for 97 with 4799 remaining (b = 0.11)
0.78/1.00	c INFO: running adaptg2wsat2009++@0 for 97 with 4799 remaining (b = 0.06)
0.96/1.03	c INFO: running adaptg2wsat2009++@0 for 97 with 4799 remaining (b = 0.05)
1.15/1.13	s SATISFIABLE
1.15/1.13	v 1 2 3 -4 -5 6 -7 8 -9 10 11 12 -13 14 -15 16 17 -18 -19 -20 -21 22 -23 -24 25 26 27 28 29 -30 -31 -32 33 34 -35 36 -37 -38 39 -40 41 -42 43 -44 45 -46 -47 -48 -49 -50 51 52 -53 -54 -55 56 57 58 -59 -60 -61 -62 -63 64 65 -66 67 68 -69 70 -71 -72 73 74 -75 -76 77 -78 -79 80 -81 82 -83 84 85 86 -87 88 -89 -90 0

Verifier Data

OK

Watcher Data

runsolver Copyright (C) 2010-2011 Olivier ROUSSEL

This is runsolver version 3.3.0 (svn: 935)

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

command line: BIN/runsolver --timestamp -w /tmp/evaluation-result-3317524-1304269950/watcher-3317524-1304269950 -o /tmp/evaluation-result-3317524-1304269950/solver-3317524-1304269950 -C 4800 -W 1300 -M 15500 python HOME/solve HOME/etc/borg-mix+class.random.pickle HOME/instance-3317524-1304269950.cnf -seed 496160418 -budget 4800 -cores 4 

running on 4 cores: 0,2,4,6

Enforcing CPUTime limit (soft limit, will send SIGTERM then SIGKILL): 4800 seconds
Enforcing CPUTime limit (hard limit, will send SIGXCPU): 4830 seconds
Enforcing wall clock limit (soft limit, will send SIGTERM then SIGKILL): 1300 seconds
Enforcing VSIZE limit (soft limit, will send SIGTERM then SIGKILL): 15872000 KiB
Enforcing VSIZE limit (hard limit, stack expansion will fail with SIGSEGV, brk() and mmap() will return ENOMEM): 15923200 KiB
Current StackSize limit: 10240 KiB


[startup+0 s]
/proc/loadavg: 7.97 8.33 8.11 6/248 24571
/proc/meminfo: memFree=29498188/32951124 swapFree=67107188/67111528
[pid=24571] ppid=24569 vsize=15772 CPUtime=0 cores=0,2,4,6
/proc/24571/stat : 24571 (python) R 24569 24571 23486 0 -1 4202496 889 0 0 0 0 0 0 0 25 0 1 0 538593479 16150528 772 33554432000 4194304 5683644 140736506514720 18446744073709551615 4540219 0 0 16781312 2 0 0 0 17 0 0 0 0
/proc/24571/statm: 3943 772 343 364 0 430 0

[startup+0.0107761 s]
/proc/loadavg: 7.97 8.33 8.11 6/248 24571
/proc/meminfo: memFree=29498188/32951124 swapFree=67107188/67111528
[pid=24571] ppid=24569 vsize=15904 CPUtime=0 cores=0,2,4,6
/proc/24571/stat : 24571 (python) S 24569 24571 23486 0 -1 4202496 943 0 0 0 0 0 0 0 25 0 1 0 538593479 16285696 820 33554432000 4194304 5683644 140736506514720 18446744073709551615 210204645376 0 2147483391 16781312 2 18446744071699207358 0 0 17 6 0 0 0
/proc/24571/statm: 3976 820 357 364 0 463 0
Current children cumulated CPU time (s) 0
Current children cumulated vsize (KiB) 15904

[startup+0.100767 s]
/proc/loadavg: 7.97 8.33 8.11 6/248 24571
/proc/meminfo: memFree=29498188/32951124 swapFree=67107188/67111528
[pid=24571] ppid=24569 vsize=104612 CPUtime=0.06 cores=0,2,4,6
/proc/24571/stat : 24571 (python) S 24569 24571 23486 0 -1 4202496 3144 0 0 0 5 1 0 0 17 0 1 0 538593479 107122688 2821 33554432000 4194304 5683644 140736506514720 18446744073709551615 210204645376 0 2147483391 16781312 2 18446744071699207358 0 0 17 6 0 0 0
/proc/24571/statm: 26153 2821 847 364 0 1901 0
Current children cumulated CPU time (s) 0.06
Current children cumulated vsize (KiB) 104612

[startup+0.306796 s]
/proc/loadavg: 7.97 8.33 8.11 6/248 24571
/proc/meminfo: memFree=29498188/32951124 swapFree=67107188/67111528
[pid=24571] ppid=24569 vsize=198916 CPUtime=0.23 cores=0,2,4,6
/proc/24571/stat : 24571 (python) R 24569 24571 23486 0 -1 4202496 7022 934 1 0 17 6 0 0 17 0 1 0 538593479 203689984 5053 33554432000 4194304 5683644 140736506514720 18446744073709551615 4620076 0 0 16781312 2 0 0 0 17 2 0 0 0
/proc/24571/statm: 49729 5053 1466 364 0 3756 0
Current children cumulated CPU time (s) 0.23
Current children cumulated vsize (KiB) 198916

[startup+0.700692 s]
/proc/loadavg: 7.97 8.33 8.11 6/248 24571
/proc/meminfo: memFree=29498188/32951124 swapFree=67107188/67111528
[pid=24571] ppid=24569 vsize=280232 CPUtime=0.58 cores=0,2,4,6
/proc/24571/stat : 24571 (python) R 24569 24571 23486 0 -1 4202496 9998 934 1 0 51 7 0 0 17 0 1 0 538593479 286957568 7443 33554432000 4194304 5683644 140736506514720 18446744073709551615 47122212539122 0 0 16781312 2 0 0 0 17 0 0 0 0
/proc/24571/statm: 70058 7443 1826 364 0 5982 0
Current children cumulated CPU time (s) 0.58
Current children cumulated vsize (KiB) 280232

Solver just ended. Dumping a history of the last processes samples

[startup+1.10859 s]
/proc/loadavg: 7.97 8.33 8.11 10/255 24582
/proc/meminfo: memFree=29464776/32951124 swapFree=67107188/67111528
[pid=24571] ppid=24569 vsize=320744 CPUtime=0.91 cores=0,2,4,6
/proc/24571/stat : 24571 (python) S 24569 24571 23486 0 -1 4202496 13064 934 1 0 83 8 0 0 22 0 5 0 538593479 328441856 7385 33554432000 4194304 5683644 140736506514720 18446744073709551615 210216474059 0 0 16781312 2 18446744073709551615 0 0 17 2 0 0 0
/proc/24571/statm: 80186 7385 1883 364 0 16095 0
[pid=24577] ppid=24571 vsize=279412 CPUtime=0 cores=0,2,4,6
/proc/24577/stat : 24577 (python) S 24571 24571 23486 0 -1 4202560 733 0 0 0 0 0 0 0 19 0 1 0 538593573 286117888 5792 33554432000 4194304 5683644 140736506514720 18446744073709551615 210204667407 0 0 16781312 514 14307650147427811327 0 0 17 6 0 0 0
/proc/24577/statm: 69853 5792 354 364 0 5771 0
[pid=24579] ppid=24577 vsize=1018088 CPUtime=0.13 cores=0,2,4,6
/proc/24579/stat : 24579 (gnovelty+2) R 24577 24579 24579 0 -1 4202496 571 0 0 0 13 0 0 0 21 0 1 0 538593573 1042522112 307 33554432000 134512640 135663704 4293403456 18446744073709551615 134524918 0 0 16781312 0 0 0 0 17 0 0 0 0
/proc/24579/statm: 254522 307 113 282 0 254238 0
[pid=24580] ppid=24571 vsize=289988 CPUtime=0 cores=0,2,4,6
/proc/24580/stat : 24580 (python) R 24571 24571 23486 0 -1 4202560 748 0 0 0 0 0 0 0 21 0 1 0 538593576 296947712 5838 33554432000 4194304 5683644 140736506514720 18446744073709551615 5293200 0 0 16781312 514 0 0 0 17 6 0 0 0
/proc/24580/statm: 72497 5838 348 364 0 8412 0
[pid=24582] ppid=24580 vsize=0 CPUtime=0.11 cores=0,2,4,6
/proc/24582/stat : 24582 (gnovelty+2) R 24580 24582 24582 0 -1 4202500 572 0 0 0 11 0 0 0 23 0 1 0 538593576 0 0 33554432000 0 0 0 0 0 0 0 16781312 0 18446744073709551615 0 0 17 6 0 0 0
/proc/24582/statm: 0 0 0 0 0 0 0
[pid=24571/tid=24578] ppid=24569 vsize=320744 CPUtime=0 cores=0,2,4,6
/proc/24571/task/24578/stat : 24578 (python) S 24569 24571 23486 0 -1 4202560 27 934 0 0 0 0 0 0 20 0 5 0 538593573 328441856 7385 33554432000 4194304 5683644 140736506514720 18446744073709551615 210216470961 0 0 16781312 2 18446604452339627200 0 0 -1 2 0 0 0
[pid=24571/tid=24581] ppid=24569 vsize=320744 CPUtime=0 cores=0,2,4,6
/proc/24571/task/24581/stat : 24581 (python) S 24569 24571 23486 0 -1 4202560 24 934 0 0 0 0 0 0 22 0 5 0 538593576 328441856 7385 33554432000 4194304 5683644 140736506514720 18446744073709551615 210216470961 0 0 16781312 2 18446604452339627200 0 0 -1 6 0 0 0
[pid=24571/tid=24584] ppid=24569 vsize=320744 CPUtime=0 cores=0,2,4,6
/proc/24571/task/24584/stat : 24584 (python) S 24569 24571 23486 0 -1 4202560 20 934 0 0 0 0 0 0 20 0 5 0 538593579 328441856 7385 33554432000 4194304 5683644 140736506514720 18446744073709551615 210216470961 0 0 16781312 2 18446604452339627200 0 0 -1 2 0 0 0
Current children cumulated CPU time (s) 1.15
Current children cumulated vsize (KiB) 1908232

Child status: 0
Real time (s): 1.15683
CPU time (s): 1.39379
CPU user time (s): 1.27981
CPU system time (s): 0.113982
CPU usage (%): 120.483
Max. virtual memory (cumulated for all children) (KiB): 2917092

getrusage(RUSAGE_CHILDREN,...) data:
user time used= 1.27981
system time used= 0.113982
maximum resident set size= 0
integral shared memory size= 0
integral unshared data size= 0
integral unshared stack size= 0
page reclaims= 24356
page faults= 1
swaps= 0
block input operations= 0
block output operations= 0
messages sent= 0
messages received= 0
signals received= 0
voluntary context switches= 1084
involuntary context switches= 46

runsolver used 0.003999 second user time and 0.013997 second system time

The end

Launcher Data

Begin job on node130 at 2011-05-01 19:12:30
IDJOB=3317524
IDBENCH=82989
IDSOLVER=1705
FILE ID=node130/3317524-1304269950
RUNJOBID= node130-1304267282-23504
PBS_JOBID= 13173949
Free space on /tmp= 72668 MiB

SOLVER NAME= borg-sat 11.03.02-random
BENCH NAME= SAT11/random/medium/unif-k7-r89-v90-c8010-S51928934-076.SATISFIABLE.cnf
COMMAND LINE= python DIR/solve DIR/etc/borg-mix+class.random.pickle BENCHNAME -seed RANDOMSEED -budget TIMEOUT -cores NBCORE
RUNSOLVER COMMAND LINE= BIN/runsolver --timestamp -w /tmp/evaluation-result-3317524-1304269950/watcher-3317524-1304269950 -o /tmp/evaluation-result-3317524-1304269950/solver-3317524-1304269950 -C 4800 -W 1300 -M 15500  python HOME/solve HOME/etc/borg-mix+class.random.pickle HOME/instance-3317524-1304269950.cnf -seed 496160418 -budget 4800 -cores 4

TIME LIMIT= 4800 seconds
MEMORY LIMIT= 15500 MiB
NBCORE= 4

MD5SUM BENCH= 398f9c2cc63f6285faba700796fc9dcc
RANDOM SEED=496160418

node130.alineos.net Linux 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009

/proc/cpuinfo:
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 0
siblings	: 4
core id		: 0
cpu cores	: 4
apicid		: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5333.67
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 1
siblings	: 4
core id		: 0
cpu cores	: 4
apicid		: 16
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5332.83
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]

processor	: 2
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 0
siblings	: 4
core id		: 1
cpu cores	: 4
apicid		: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5332.75
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]

processor	: 3
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 1
siblings	: 4
core id		: 1
cpu cores	: 4
apicid		: 18
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5332.81
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]

processor	: 4
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 0
siblings	: 4
core id		: 2
cpu cores	: 4
apicid		: 4
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5332.75
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]

processor	: 5
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 1
siblings	: 4
core id		: 2
cpu cores	: 4
apicid		: 20
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5332.83
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]

processor	: 6
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 0
siblings	: 4
core id		: 3
cpu cores	: 4
apicid		: 6
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5332.75
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]

processor	: 7
vendor_id	: GenuineIntel
cpu family	: 6
model		: 26
model name	: Intel(R) Xeon(R) CPU           X5550  @ 2.67GHz
stepping	: 5
cpu MHz		: 2666.838
cache size	: 8192 KB
physical id	: 1
siblings	: 4
core id		: 3
cpu cores	: 4
apicid		: 22
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips	: 5332.81
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: [8]


/proc/meminfo:
MemTotal:     32951124 kB
MemFree:      29498344 kB
Buffers:        235080 kB
Cached:        1495500 kB
SwapCached:       1948 kB
Active:        1906564 kB
Inactive:      1248368 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:     32951124 kB
LowFree:      29498344 kB
SwapTotal:    67111528 kB
SwapFree:     67107188 kB
Dirty:           36996 kB
Writeback:           4 kB
AnonPages:     1423292 kB
Mapped:          24224 kB
Slab:           221280 kB
PageTables:      17432 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:  83587088 kB
Committed_AS: 19468072 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    296008 kB
VmallocChunk: 34359440975 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

Free space on /tmp at the end= 72636 MiB
End job on node130 at 2011-05-01 19:12:31