CN107358962B - 音频处理方法及音频处理装置 - Google Patents
音频处理方法及音频处理装置 Download PDFInfo
- Publication number
- CN107358962B CN107358962B CN201710427171.6A CN201710427171A CN107358962B CN 107358962 B CN107358962 B CN 107358962B CN 201710427171 A CN201710427171 A CN 201710427171A CN 107358962 B CN107358962 B CN 107358962B
- Authority
- CN
- China
- Prior art keywords
- milliseconds
- moment
- impulse response
- value range
- frequency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 title claims abstract description 17
- 230000004044 response Effects 0.000 claims abstract description 194
- 230000005236 sound signal Effects 0.000 claims abstract description 63
- 238000004364 calculation method Methods 0.000 claims abstract description 61
- 108010076504 Protein Sorting Signals Proteins 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 15
- 238000004088 simulation Methods 0.000 abstract description 4
- 210000003128 head Anatomy 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001737 promoting effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001364 causal effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 210000000883 ear external Anatomy 0.000 description 2
- 210000005069 ears Anatomy 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 240000006409 Acacia auriculiformis Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000002592 echocardiography Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009527 percussion Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 210000003454 tympanic membrane Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/008—Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/26—Pre-filtering or post-filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04S—STEREOPHONIC SYSTEMS
- H04S1/00—Two-channel systems
- H04S1/007—Two-channel systems in which the audio signals are in digital form
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Stereophonic System (AREA)
Abstract
本发明公开了一种音频处理方法,包括:将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;所述第一冲激响应序列h(n)的序列特征包括音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒]。本发明还公开了一种音频处理装置,解决现有技术如何对3D化后的声音进行再处理,使得声音仿佛来自周围空间,以更好地模拟或重建某个具体真实环境响起的效果的技术问题。
Description
技术领域
本发明涉及计算机领域,尤其涉及音频处理方法及音频处理装置。
背景技术
头部相关传递函数或头相关变换函数HRTF(Head Related Transfer Function),是一种音效定位算法,对应时域的头相关冲激响应(Head Related Impulse Response,HRIR)。HRTF反映进入人耳的声音信号的方位不同时外耳、头部、躯干对声音信号的滤波作用。以HRTF原理为理论依据,用双通道实现虚拟3D立体声的技术在电视、光碟(CompactDisc,CD)、影音光碟(Video Compact Disc,VCD)、镭射影碟(Laser disc,LD)、高密度数字视频光盘(Digital Video Disc,DVD)、组合音响、家庭影院、游戏机、多媒体计算机及汽车音响系统中有极大的应用前景。
一个单声道声音经过HRTF滤波后会形成双声道的、具有方位感的3D声音。但是这个带有方位感的声音,听起来仅在头内有方位感,而实际上,更希望声音好似来自头外,而不是头内或耳机,并且希望越像来自周围空间某处越好。一种极致就是,当声音响起时,听者分辨不出是耳机响还是周围真的有声音在响。
那么,如何对3D化后的声音进行再处理,使得声音仿佛来自周围空间,以更好地模拟或重建某个具体真实环境响起的效果,是人们当前研究的热点问题。
发明内容
本发明实施例所要解决的技术问题在于,提供一种音频处理方法及音频处理装置,解决现有技术如何对3D化后的声音进行再处理,使得声音仿佛来自周围空间,以更好地模拟或重建某个具体真实环境响起的效果的技术问题。
为了解决上述技术问题,本发明实施例第一方面公开了一种音频处理方法,包括:
经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒]。
结合第一方面,在第一种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7 毫秒,25.3毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻。
结合第一方面,在第二种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在第四时刻出现第四反射声,在第五时刻出现第五反射声;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒],所述第五时刻的取值范围是 [62.1毫秒,75.9毫秒]。
结合第一方面,在第三种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒]。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,到达第五时刻时4k以上的频率响应出现提升;所述第五时刻的取值范围是[62.1毫秒,75.9毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
结合第一方面的第三种可能的实现方式,在第六种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒]。
结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,所述第六时刻之后,音频能量衰减 60分贝时,4k以上的频率能量与4k以下的频率能量的比值的取值范围是[0.78, 0.96]。
本发明实施例第二方面公开了一种音频处理方法,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7毫秒,25.3毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻。
结合第二方面,在第一种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在第四时刻出现第四反射声,在第五时刻出现第五反射声;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒],所述第五时刻的取值范围是 [62.1毫秒,75.9毫秒]。
结合第二方面,在第二种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒]。
结合第二方面,或者第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒]。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,到达第五时刻时4k以上的频率响应出现提升;所述第五时刻的取值范围是[62.1毫秒,75.9毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
结合第二方面,在第六种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒]。
结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,所述第六时刻之后,音频能量衰减 60分贝时,4k以上的频率能量与4k以下的频率能量的比值的取值范围是[0.78, 0.96]。
本发明实施例第三方面公开了一种音频处理方法,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒]。
结合第三方面,在第一种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7 毫秒,25.3毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻。
结合第三方面,在第二种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在第四时刻出现第四反射声,在第五时刻出现第五反射声;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒],所述第五时刻的取值范围是 [62.1毫秒,75.9毫秒]。
结合第三方面,在第三种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒]。
结合第三方面,在第四种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
结合第三方面,在第五种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,到达第五时刻时4k以上的频率响应出现提升;所述第五时刻的取值范围是[62.1毫秒,75.9毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
结合第三方面,在第六种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒]。
结合第三方面的第六种可能的实现方式,在第七种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,所述第六时刻之后,音频能量衰减 60分贝时,4k以上的频率能量与4k以下的频率能量的比值的取值范围是[0.78, 0.96]。
本发明实施例第四方面公开了一种音频处理方法,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒]。
结合第四方面,在第一种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7 毫秒,25.3毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻。
结合第四方面,在第二种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,在第四时刻出现第四反射声,在第五时刻出现第五反射声;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒],所述第五时刻的取值范围是 [62.1毫秒,75.9毫秒]。
结合第四方面,在第三种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,所述第六时刻之后,音频能量衰减60分贝时,4k以上的频率能量与4k以下的频率能量的比值的取值范围是[0.78,0.96]。
结合第四方面,在第四种可能的实现方式中,所述第一冲激响应序列h(n) 的序列特征还包括,音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒]。
结合第四方面,或者第四方面的第四种可能的实现方式,在第五种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒]。
结合第四方面的第五种可能的实现方式,在第六种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
结合第四方面的第五种可能的实现方式,在第七种可能的实现方式中,所述第一冲激响应序列h(n)的序列特征还包括,到达第五时刻时4k以上的频率响应出现提升;所述第五时刻的取值范围是[62.1毫秒,75.9毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
本发明实施例第五方面公开了一种音频处理方法,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n) 的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒]。
本发明实施例第六方面公开了一种音频处理方法,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n) 的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7毫秒,25.3 毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻。
本发明实施例第七方面公开了一种音频处理方法,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n) 的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒, 11毫秒]。
本发明实施例第八方面公开了一种音频处理方法,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n) 的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒]。
本发明实施例第九方面公开了一种音频处理装置,包括存储器和处理器,其中所述存储器用于存储多条音频处理指令,所述处理器用于加载所述音频处理指令并执行实现上述第一方面至第八方面中各种可能的实现方式中的步骤。
本发明实施例第十方面公开了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括音频处理指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面至第八方面中各种可能的实现方式中的步骤。
本发明实施例第十一方面公开了一种音频处理装置,包括:
卷积计算单元,用于将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
该第一冲激响应序列h(n)的序列特征包括上述第一方面至第八方面中各种可能的实现方式中的第一冲激响应序列h(n)的序列特征。
实施本发明实施例,通过将经过HRIR滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;该第一冲激响应序列h(n)是一个有限长度的因果序列,包括特有的序列特征以模拟某个真实环境的冲激响应,解决了现有技术如何对3D化后的声音进行再处理,使得声音仿佛来自周围空间,以更好地模拟或重建某个具体真实环境响起的效果的技术问题,使得声音仿佛来自周围空间,给听者带来极强的临场感。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的Schroeder模型结构的原理示意图;
图2是本发明实施例提供的音频处理的原理示意图;
图3是本发明实施例提供的关于hL(n)和hR(n)的语谱图;
图4是本发明实施例提供的关于hL(n)和hR(n)的时域波形图;
图5是本发明提供的关于hL(n)和hR(n)的另一实施例的时域波形图;
图6是本发明提供的关于hL(n)和hR(n)的另一实施例的时域波形图;
图7是本发明提供的关于hL(n)和hR(n)的另一实施例的语谱图;
图8是本发明提供的关于hL(n)和hR(n)的另一实施例的语谱图;
图9是本发明提供的关于hL(n)和hR(n)的另一实施例的语谱图;
图10是本发明提供的关于hL(n)和hR(n)的另一实施例的语谱图;
图11是本发明实施例提供的音频处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
在音频处理领域,经典人工混响模型有Schroeder模型或Moorer模型等。比如,如图1示出的本发明实施例提供的Schroeder模型结构的原理示意图,其中x(n)为输入的音频信号序列(相当于声音序列),C1、C2、C3、C4是梳妆滤波器用以模拟前期反射声,A1、A2是全通滤波器用以增强后期反射声密度。然而,经典人工混响模型的结构的混响器输出的y(n)所能表现的混响效果显得虚假,尤其模拟稍大房间时可以听出“金属音”,而且一般这类混响器更适合作为音乐和声中人声处理的效果器,在细腻、逼真上不如采样混响。
本发明实施例中的一种音频处理方法,采用了采样混响的方式。如图2示出的本发明实施例提供的音频处理的原理示意图,图2中HRIR是HRTF的另一种形式(时域的头相关冲激响应),HRIR是与HRTF对应的时域冲击响应,HRTF 实际上就是外耳的频率响应,它定义为耳道中信号的傅里叶变换与自由声场信号傅里叶变换的比值。HRIR和HRTF是一一对应的傅里叶变换关系,因此,HRIR 和HRTF本质是相同的。两者的实质都是一种音效定位的算法,可以利用此算法,通过对输入的音频信号的处理的来判断声音发生的位置,即HRIR可以看作是一个滤波器,而对于一个人来说,由于距离声源的距离以及音频信号传输的路径等不同,所以一个人的左耳的HRIR和右耳的HRIR是不同的。进一步的,也可以将第一滤波器称之为第一HRTF滤波器,即HRTF是一组滤波器,HRTF 利用ITD(Interaural Time Delay,双耳时间延迟)、IAD(Interaural Amplitude Difference,耳间振幅差)和耳廓频率振动等技术产生立体音效,使声音传递至人耳内的耳廓,耳道和鼓膜时,聆听者会有环绕音效之感觉,通过DSP(Digital Signal Processing,数字信号处理),HRTF可实时处理虚拟世界的音源。
在图2中,本发明实施例可以通过对前一级输出的左声道和右声道分别做有限长单位冲激响应(Finite Impulse Response,FIR)滤波,滤波器系数即为采样混响参数。本发明通过采用了3D化后级联采样混响的方案,并且经过了大量的实验,选取并微调采样混响参数,使得声音仿佛来自周围空间,给听者带来极强的临场感。
具体地,本发明实施例提供的音频处理方法包括如下步骤:将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;然后输出卷积计算后的音频信号数据。
HRIR滤波(或HRTF滤波)处理后得到的音频信号序列即为3D化后的音频信号序列,本发明实施例音频处理是对3D化后的左右声道分别进行FIR滤波,也就是说,将3D化后的左声道的音频信号序列与左声道的h(n)进行卷积计算,将3D化后的右声道的音频信号序列与右声道的h(n)进行卷积计算,分别得到卷积计算后的音频信号数据或音频数据;然后输出卷积计算后的音频信号数据。而滤波器传递函数的时域形式是真实环境测得的冲激响应。FIR滤波可由直接的线性卷积进行,也可以用基于FFT的快速卷积实现。
卷积方案可以如下:
公式1为两个序列线性卷积的定义,其中x(n)即3D化后的音频信号序列, h(n)则为采样混响的冲激响应序列。两者卷积后将得到具备和采样混响环境一样空间感的声音输出y(n)。3D化后,单声道声音变为两个声道,即xL(n)和 xR(n)。而采样混响数据也分为hL(n)和hR(n),按照(公式1)分别进行卷积计算即可得到yL(n)和yR(n),即完成了卷积实现方案。
需要说明的是,hL(n)和hR(n)是在事先在真实环境中经过一定的测量手段得到的真实环境的冲激响应,是一个有限长度的因果序列。这个冲激响应描述了这个真实环境的声学特性,用这个卷积手段即可重建声音在这个真实环境响起的效果,从而增加听者的临场感。
本发明实施例中的hL(n)和hR(n)的序列特征相似,下面详细描述hL(n)和 hR(n)的序列特征,即h(n)的序列特征可以包括如下特征:
该h(n)的序列特征可以包括音频能量衰减60分贝db所经历的时长为第一时长;该第一时长的取值范围是[360毫秒,440毫秒]。如图3示出的本发明实施例提供的关于hL(n)和hR(n)的语谱图,图3中横坐标表示时间,纵坐标表示频率,亮度表示音频能量,从图3中的箭头可以反映出h(n)的衰减速度,序列整体衰减60db所需要的时长在360毫秒到440毫秒之间,例如400毫秒。
该h(n)的序列特征可以包括在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;该第一时刻的取值范围是[15.3毫秒, 18.7毫秒],该第二时刻的取值范围是[18毫秒,22毫秒],该第三时刻的取值范围是[20.7毫秒,25.3毫秒];且该第二时刻大于所述第一时刻,该第三时刻大于所述第二时刻。如图4示出的本发明实施例提供的关于hL(n)和hR(n)的时域波形图,图4中横坐标表示时间(秒s),纵坐标表示幅度,以图4为例,展示了从开始到该第三时刻处的时域波形图,可以按时间顺序依次得出三个反射声,在17ms(即第一时刻)时出现第一反射声,在20ms(即第二时刻)时出现第二反射声,在23ms(即第三时刻)时出现第三反射声。
该h(n)的序列特征可以包括在第四时刻出现第四反射声,在第五时刻出现第五反射声;该第四时刻的取值范围是[43.2毫秒,52.8毫秒],该第五时刻的取值范围是[62.1毫秒,75.9毫秒]。如图5示出的本发明提供的关于hL(n)和hR(n) 的另一实施例的时域波形图,图5中横坐标表示时间(秒s),纵坐标表示幅度,以图5为例,展示了从第四时刻到第五时刻的时域波形图,可以按时间顺序依次得出两个反射声,在48ms(即第四时刻)时出现第四反射声,在69ms(即第五时刻)时出现第五反射声。
可以结合图4和图5,得到如图6示出的本发明提供的关于hL(n)和hR(n)的另一实施例的时域波形图,第一反射声,第二反射声以及第三反射声为主要的三次反射声,在出现这三次反射声以后,回声的密度越来越密集,能量也开始呈现明显的衰减,但在第四时刻和第五时刻又出现了该第四反射声和该第五反射声这两个较强回声,该两个较强回声可以看作是来自远处的前两次反射。在第五时刻以后再无明显的强反射,并且反射声密度持续增加,直至衰减完毕。
该h(n)的序列特征可以包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒]。如图7示出的本发明提供的关于hL(n)和 hR(n)的另一实施例的语谱图,图7中横坐标表示时间,纵坐标表示频率,亮度表示音频能量,以图7为例,展示了初始的10ms内的语谱图,在这前期的10ms (即第一时间段)内,频率响应很平坦,也就是说,在初始的第一时间段内各个频率的幅度差小于第一阈值,即高频、中频以及低频的频率响应都很接近,本发明实施例中的第一阈值的取值范围可以为[0.9db,1.1db],例如可以为1db。
该h(n)的序列特征可以包括到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。如图8示出的本发明提供的关于hL(n)和hR(n)的另一实施例的语谱图,图8中横坐标表示时间,纵坐标表示频率,亮度表示音频能量,以图8为例,展示了在48ms(即第四时刻)处的语谱图,可以看到频率在 4K以上的频率响应出现了提升(即在48ms处开始亮度变亮了),且提升所经历的时长为6ms。
该h(n)的序列特征可以包括到达第五时刻时4k以上的频率响应出现提升;所述第五时刻的取值范围是[62.1毫秒,75.9毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。如图9示出的本发明提供的关于hL(n)和hR(n)的另一实施例的语谱图,图9中横坐标表示时间,纵坐标表示频率,亮度表示音频能量,以图9为例,展示了在69ms(即第五时刻)处的语谱图,可以看到频率在 4K以上的频率响应出现了提升(即在69ms处开始亮度变亮了),且提升所经历的时长为6ms。
该h(n)的序列特征可以包括到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒]。例如在达到80ms之前高频衰减的速度小于80ms之后的高频衰减的速度,可以结合图7、图8和图9,得到如图10示出的本发明提供的关于hL(n)和hR(n)的另一实施例的语谱图,图 10中横坐标表示时间,纵坐标表示频率,亮度表示音频能量,以图10为例,在 80ms之前,高频的亮度变暗得较慢,在到达80ms之后,高频衰减的速度有所增加,即高频的亮度变暗得较快。
进一步地,该h(n)的序列特征可以包括到达第六时刻之后,音频能量衰减 60分贝时,4k以上的频率能量与4k以下的频率能量的比值的取值范围是[0.78, 0.96]。例如,在到达80ms之后,音频能量衰减60db时,4k以上的频率能量与 4k以下的频率能量的比值为0.85,也就是说,4k以上的频率能量低于4k以下的频率能量的八分之一。
本发明实施例中音频处理方法中的该h(n)的序列特征可以包括上述任意一个特征,或者特征的任意组合。本发明实施例中音频处理方法可以模拟出声音在这个真实环境响起的效果,如模拟出声音在某个具体房间响起的效果,此时该h(n)的序列特征为由房间特征决定的时频特点和频谱随时间变化的特点。
需要说明的是,本发明实施例中的图4、图5、和图6中的纵轴的数值大小不进行限定,因为音频的增益可以按照用户需求来随意设定,纵轴的数值大小仅仅关系到音量大小。本发明实施例中当h(n)序列较长时,可以采用快速卷积方案来进行快速运算;即利用FFT和反FFT计算公式1所示的线性卷积,得到的结果一致,只是运算量不同而已,采用快速卷积方案,乘加运算可以大幅减少。
本发明实施例的音频处理方法中的h(n),该冲激响应序列缩放到short类型的具体数值,以长度为13800点,采样率为48000HZ为例,两个序列hL(n)和 hR(n)相当于数组room1和数组room2,可以如下:
hL(n):
short g_thetrackingroomL[13800]={0,
0,0,-1,0,0,0,-1,0,
0,1,0,0,-1,0,0,0,
0,0,0,0,1,0,0,0,
0,0,0,0,0,0,0,1,
0,0,0,0,0,0,1,0,
0,0,0,1,-1,0,0,0,
0,0,0,-1,0,0,0,0,
0,0,1,0,0,-1,0,0,
1,0,0,0,-1,0,0,1,
0,0,0,0,0,1,1,0,
-1,0,-1,-1,0,0,0,1,
-1,0,1,0,0,0,1,0,
0,0,0,0,0,0,0,-1,
-1,0,1,0,0,0,0,0,
1,1,0,0,0,0,0,0,
0,0,0,1,0,1,0,-1,
0,1,1,0,0,0,0,1,
0,0,0,0,0,0,0,0,
0,0,0,0,0,1,0,0,
0,0,0,-1,0,0,0,0,
0,0,0,0,1,0,1,0,
1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,-1,0,
0,0,0,0,0,0,-1,0,
0,0,1,-1,0,0,0,0,
1,1,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,
0,0,1,-1,1,1,0,0,
0,0,0,0,0,0,0,0,
0,0,-1,0,1,0,0,0,
0,0,0,0,-1,0,1,0,
0,-1,0,0,-1,1,0,0,
0,0,0,0,-1,0,0,0,
0,0,0,1,-1,0,1,0,
1,0,0,0,0,0,-1,0,
0,0,0,0,1,0,0,-1,
-1,0,0,0,0,-1,-1,-1,
0,0,-1,0,0,0,0,-1,
0,0,0,-1,0,0,1,0,
0,0,0,0,0,0,0,1,
0,-1,0,1,0,0,0,0,
0,0,0,-1,0,0,0,0,
0,1,0,0,0,0,0,0,
0,-1,1,0,0,0,0,-1,
0,0,0,0,-1,0,0,0,
1,0,0,-1,0,0,0,0,
0,1,0,0,0,0,1,0,
0,1,0,0,0,0,0,0,
0,0,0,1,1,0,-1,0,
0,0,0,0,0,0,0,-1,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,0,
1,1,0,0,-1,0,0,0,
-1,-1,-1,1,0,0,0,0,
0,0,0,0,0,-1,1,1,
1,0,0,1,0,1,0,0,
0,0,0,-1,0,1,0,0,
0,0,1,0,1,0,0,0,
1,0,1,-1,0,0,0,0,
0,0,1,0,-1,-1,1,1,
0,0,0,0,0,0,0,0,
0,0,1,0,0,0,0,0,
0,1,1,1,0,0,-1,0,
0,0,0,-1,-1,0,0,-1,
-1,-1,0,0,1,0,0,0,
0,0,0,1,0,0,0,1,
0,0,0,0,0,1,1,0,
0,0,0,0,-1,0,0,0,
0,0,0,0,0,0,0,-1,
0,0,0,0,0,0,0,-1,
0,1,0,0,0,0,0,0,
0,0,1,0,-1,0,0,0,
0,1,0,0,-1,0,0,-1,
0,0,1,0,0,0,0,0,
1,0,0,-1,-1,1,0,0,
0,0,0,0,0,0,0,0,
1,0,0,0,0,-1,0,0,
0,0,0,1,0,0,0,0,
1,-1,0,0,0,-1,0,0,
1,1,0,0,0,1,0,0,
1,0,-1,0,0,0,1,-1,
0,0,0,0,0,0,0,0,
0,0,-1,0,-1,0,-1,1,
0,0,0,0,0,0,0,0,
-1,0,-1,-1,-1,-2,1,2,
-1,-6,-11,-11,-3,5,8,6,
0,-5,-8,-2,5,12,11,7,
0,2,-3,-23,-41,-53,-51,-39,
-35,-40,-42,-34,-16,-1,0,-3,
-8,-2,18,32,34,22,-1,-10,
6,29,38,27,13,2,-9,-15,
-10,7,21,9,-4,22,67,83,
74,75,81,75,63,51,32,13,
12,14,-1,-12,8,19,2,-20,
-29,-18,-3,6,-7,-35,-56,-65,
-46,-17,-22,-44,-49,-25,14,15,
-18,-45,-46,-27,-14,-9,-12,-15,
-14,-15,-11,1,10,5,-12,-23,
-19,-12,-17,-29,-33,-29,-14,2,
11,14,6,-8,-13,-4,-2,-10,
-7,-1,-4,-22,-31,-24,-19,-11,
-7,-6,-11,-13,-10,-8,-8,-2,
4,12,43,40,1,-5,41,57,
7,111,306,207,-93,-292,-155,110,
240,342,128,-95,31,131,102,-36,
-189,-225,-151,-74,-44,-71,-78,-19,
13,-7,-29,1,22,-19,-24,59,
119,109,75,73,94,98,109,80,
62,101,108,114,152,130,91,113,
124,108,46,-11,22,78,107,89,
40,27,64,74,22,-8,5,49,
127,133,75,72,60,10,-22,-39,
-39,-30,-23,-43,-43,-4,-10,-57,
-63,-17,19,10,-8,8,22,46,
70,55,19,10,-6,-59,-98,-89,
-19,26,24,-21,-118,-149,-96,-20,
1,-38,-62,-26,33,63,67,20,
-47,-64,-21,-1,-48,-46,-2,31,
32,12,14,24,72,74,41,57,
54,30,-8,-46,-62,-34,-13,-42,
-43,2,44,40,26,43,65,81,
87,76,49,22,7,-2,-15,-15,
3,43,89,107,94,-6,20,168,
67,-159,-232,-139,-160,-325,-256,5,
106,0,-68,5,69,33,-50,-133,
-166,-115,42,218,258,170,93,77,
74,47,12,41,122,164,152,144,
177,164,48,-89,-170,-196,-190,-172,
-162,-137,-108,-80,-66,-44,-18,-8,
4,29,72,86,62,28,78,92,
-17,-53,-16,53,99,105,90,44,
13,-4,-25,-37,-43,-32,-24,-28,
-7,35,67,68,31,-6,-13,-8,
-6,-19,-54,-68,-69,-63,-51,-41,
-29,-28,-69,-60,20,14,-65,-68,
16,79,46,-20,-79,-96,-60,-36,
-12,-1,-5,-45,-64,-48,-5,46,
-46,-56,18,3,10,-3,-45,-35,
7,11,-5,-21,-23,-6,0,-30,
-42,-27,-9,-34,-34,-19,-62,-29,
-23,-3,-195,-14,510,211,-231,-237,
-35,-1,-15,128,130,87,-29,-133,
-210,-203,-116,-76,-18,-8,124,227,
81,-51,-29,103,167,149,114,58,
1,-40,-24,29,56,-1,-59,-15,
68,87,30,-27,-68,-68,-49,-46,
-22,-2,17,25,35,47,25,20,
22,16,15,5,17,47,30,26,
45,35,32,31,50,4,-36,-18,
-18,31,15,28,90,73,39,-11,
-9,21,29,-40,-114,-35,25,32,
42,23,18,-30,-8,123,105,-24,
-32,22,32,60,32,-71,-89,-21,
28,10,-37,-47,-58,-53,-42,-46,
-75,-105,-80,-43,-19,0,5,-14,
16,-1,-53,-60,-132,-71,19,8,
40,12,-47,-79,-83,-54,-20,1,
-8,-39,-51,-42,-53,-55,-47,18,
61,11,-17,-22,-1,13,-9,-19,
-5,23,-14,-53,-27,-2,-21,-41,
-18,2,-31,-62,-65,-7,94,119,
95,11,-29,17,25,41,-11,-72,
-30,32,86,95,75,73,57,46,
39,15,12,17,7,-29,-46,-33,
-46,-65,-77,-75,-70,-70,-65,-60,
-40,-27,-35,-21,6,-13,-49,-30,
6,19,8,-1,-9,-42,-58,-35,
-6,4,31,1,-72,-84,-18,43,
57,91,123,129,99,79,50,13,
32,44,75,88,102,139,127,111,
96,42,25,61,12,-116,-197,-163,
-144,-223,-216,-48,121,169,152,123,
89,62,33,34,42,8,-18,-37,
-68,-43,35,33,-44,-46,13,39,
37,22,11,9,9,7,4,-2,
-2,8,2,-16,-29,-16,5,-3,
-16,8,37,15,-12,15,64,66,
70,86,34,-69,-117,-63,11,-29,
-117,-21,70,-19,-120,-92,-54,-141,
-131,-41,-22,-46,-64,-31,-33,-38,
-23,-24,14,19,5,6,-7,-1,
-6,-23,-55,-20,37,13,-16,-23,
22,57,44,10,-18,-41,-84,-69,
-33,-11,8,-4,-31,-40,-28,-17,
-28,5,100,102,45,30,36,14,
-65,-83,-18,45,77,66,37,-16,
-32,22,26,9,38,66,53,21,
22,43,20,1,-2,-55,-97,-102,
-82,-67,-72,-55,-38,-38,-42,-51,
-15,28,45,68,51,46,55,23,
19,29,22,-7,-32,28,82,13,
-63,-54,-100,-162,-166,-81,130,201,
121,60,32,-9,-98,-111,-19,50,
35,5,-20,-32,-67,-126,-121,-76,
-52,-61,-29,26,42,23,-27,-46,
-37,-3,32,4,-28,-16,16,47,
65,61,51,32,29,60,66,47,
36,18,10,21,30,23,19,15,
-16,-12,54,71,11,-50,-78,-83,
-53,28,75,49,34,4,-52,-38,
7,18,21,25,40,40,-1,-46,
-69,-63,-40,-16,15,34,4,-23,
-15,-12,-26,-29,-11,-4,-17,-21,
-28,-35,-38,-40,-6,56,106,105,
49,-21,-78,-98,-106,-93,-58,-42,
-44,-35,14,49,13,-33,-28,-6,
-13,-42,-45,-19,-10,-8,-2,8,
19,17,4,17,43,61,46,-19,
-18,4,-6,-32,-37,18,34,107,
93,13,17,-5,12,15,115,145,
25,18,22,25,20,50,70,-6,
-63,-51,-8,24,50,19,-24,-39,
-24,28,50,42,18,10,6,0,
12,14,17,5,-4,3,-7,1,
30,35,33,38,67,54,-36,-50,
17,62,58,55,78,44,6,18,
52,67,44,41,31,29,51,59,
60,33,17,43,38,2,11,30,
26,2,-22,-17,-3,-17,-63,-28,
37,21,-8,-8,4,-2,0,1,
-20,-52,-61,-43,4,43,22,15,
3,-15,15,65,63,32,12,-20,
-42,-32,-11,-5,-12,-19,-9,6,
8,3,-3,-6,-15,-29,-35,-26,
-27,-44,-38,-32,-29,-7,-11,-42,
-68,-44,-6,-12,-15,-25,-46,-53,
-55,-46,-34,-31,-37,-1,42,51,
41,19,19,29,23,6,-19,-24,
-12,-19,-53,-70,-61,-35,-26,-37,
-27,-3,-10,-11,16,37,21,1,
1,-31,-50,-19,0,-36,-68,-57,
-43,-32,-34,-3,32,26,8,-21,
-21,4,21,16,4,30,44,39,
33,27,8,-16,-37,-62,-92,-85,
-8,5,-61,-136,-148,-96,-71,-49,
-37,-5,-4,8,107,66,-47,-57,
3,29,34,61,77,120,55,-85,
-90,-42,-53,-75,-47,39,74,6,
-34,-13,22,89,136,121,43,-24,
12,18,8,27,28,5,25,99,
107,55,-15,-43,-67,-56,-53,-98,
-81,-99,-121,-151,-124,-19,-14,-1,
77,152,151,112,83,46,41,28,
3,11,14,8,43,64,67,78,
76,51,46,55,42,34,11,-18,
-32,-34,-22,-6,0,-22,-15,7,
6,-22,-32,-33,-44,-17,4,19,
10,-32,-62,-79,-68,-33,16,33,
10,-25,-56,-49,-13,-11,-22,-8,
-2,-23,-45,-44,-11,15,-1,-10,
20,12,-8,9,35,50,38,19,
9,17,59,67,48,44,21,3,
12,38,58,57,51,25,4,-4,
-8,-10,10,29,7,-4,-16,4,
33,10,-1,-6,7,1,-28,-13,
29,35,18,-6,-33,-24,-22,11,
38,8,7,8,0,17,32,9,
-7,-28,-76,-78,-42,-25,-33,-12,
52,89,60,30,19,-5,-30,-37,
-10,28,35,6,-3,26,49,44,
26,25,15,-19,-32,-3,26,8,
-16,-15,12,36,20,-11,-20,-15,
-27,-46,-53,-30,-22,-54,-55,-28,
-31,-43,-36,-24,-16,-1,-1,-24,
-34,-28,-36,-51,-10,48,28,-40,
-79,-53,1,9,13,71,105,73,
30,10,23,60,64,16,-21,-19,
-6,-1,10,30,40,10,-38,-51,
-35,-18,-16,-7,26,55,60,54,
38,39,51,23,1,37,74,56,
17,-18,-34,-22,-9,2,8,8,
-26,-57,-31,6,17,6,-1,-3,
11,20,-2,0,0,-13,-11,4,
12,-8,-20,-34,-50,-22,12,39,
29,-14,-21,5,28,24,-15,-42,
-28,-18,-31,-51,-51,-20,-5,-11,
-16,-19,-1,3,-18,-27,4,70,
109,89,41,13,-7,-23,-4,16,
37,38,21,-7,-30,1,15,7,
29,24,11,25,26,-14,-55,-28,
32,37,5,15,58,74,49,0,
-47,-59,-33,-23,-41,-54,-46,-16,
-20,-50,-51,-49,-9,44,48,39,
23,26,46,51,34,32,19,-22,
-43,-40,-24,-11,5,18,6,-19,
4,65,71,25,18,37,21,26,
34,16,27,37,41,55,20,-49,
-52,21,45,23,11,24,43,1,
-14,16,43,71,35,50,91,34,
-29,-5,108,44,-166,-171,24,181,
117,-4,21,68,21,-54,-84,-113,
-108,-57,-25,-27,-65,-76,-63,-39,
15,55,48,25,10,1,-9,4,
49,46,31,27,-10,-2,-1,-22,
76,143,24,-80,-73,-8,78,98,
15,-66,-71,-61,-50,-65,-101,-71,
9,86,90,38,-6,-25,-25,-21,
-18,-37,-32,2,-13,-28,12,40,
12,-27,-34,-15,8,-4,-43,-59,
-31,5,-13,-19,14,5,-41,-40,
7,51,48,1,-2,8,-35,-89,
-86,-15,40,21,-29,-59,-54,2,
54,20,-39,-34,5,43,57,32,
-3,-26,-24,-31,-52,-39,3,55,
47,1,-19,1,37,-2,-60,-45,
8,50,17,-56,-97,-89,-4,56,
28,-26,-44,-1,22,2,-39,-26,
34,39,-10,-37,22,66,43,15,
16,34,4,-35,-68,-28,75,55,
-60,-98,-5,70,35,-11,0,28,
13,-11,-7,-12,-1,33,63,74,
18,-52,-45,-5,11,23,24,17,
15,6,23,20,-37,-34,69,119,
9,-118,-103,-28,-18,-37,-38,-19,
10,39,66,78,67,20,-24,-11,
4,-37,-93,-91,-39,15,24,-22,
-52,-24,9,13,7,16,31,14,
-1,11,33,20,-15,-19,16,54,
54,40,-5,7,64,39,-24,-69,
-67,-35,-33,-97,-144,-66,66,117,
43,-32,-7,51,76,28,-18,-8,
-5,8,21,11,-16,-34,2,19,
3,-29,-69,-78,-65,-22,8,-9,
-12,-6,-22,-54,-70,-62,-63,-47,
-6,30,15,-28,-45,-36,-16,10,
36,27,-3,4,25,15,-27,-54,
-25,30,49,24,-3,-33,-43,-17,
-5,-16,-17,-14,-7,28,50,20,
-19,-16,5,17,31,56,30,-56,
-50,29,51,43,16,-15,-32,-30,
-19,-35,18,4,-97,-84,0,56,
44,4,-30,-13,10,42,69,15,
14,25,22,55,77,73,20,-23,
-52,-27,48,44,-17,-33,16,60,
51,36,25,14,30,57,75,42,
-16,-18,-2,1,1,2,25,24,
-5,-22,-5,30,19,-7,-26,-6,
35,1,-25,-6,5,-10,-26,3,
56,59,-13,-62,-51,-3,54,7,
-71,-45,11,8,-7,-2,-40,-38,
35,48,-40,-110,-85,-37,-13,5,
2,-17,4,6,-41,-54,-39,-9,
7,15,30,10,-34,-37,11,52,
79,75,19,-41,-44,-14,-13,-21,
-13,-35,-93,-101,-71,-47,-21,-31,
-33,19,68,44,-49,-98,-51,-3,
-6,-24,-28,-25,-34,-41,-9,57,
70,31,10,-7,4,13,2,10,
8,-18,-52,-46,-2,9,-32,-57,
-49,-24,15,17,-20,-57,-77,-65,
-36,-42,-55,-37,-11,12,6,-14,
6,41,47,22,-14,-28,-21,-23,
10,92,126,108,73,45,31,18,
39,63,64,56,8,-59,-71,-27,
11,15,-9,-38,-38,0,30,34,
24,7,-5,-26,-48,-22,34,64,
48,5,-15,-18,-12,11,40,31,
6,9,16,24,21,14,33,52,
51,23,-13,-11,20,36,10,-1,
17,5,-30,-56,-62,-53,-41,-15,
-5,-6,5,-10,-22,14,61,45,
-1,-20,-12,-1,7,20,19,16,
12,28,44,29,-15,-46,-25,-15,
-17,-1,9,0,-26,-29,-11,0,
11,13,8,-8,-17,-5,-5,-14,
-22,-34,-26,-10,-3,-2,3,14,
19,-5,-51,-81,-91,-88,-69,-48,
-37,-51,-63,-11,66,68,5,-7,
39,65,41,2,-16,-6,21,51,
68,52,43,47,17,-2,8,31,
19,-10,-3,-1,-1,5,11,15,
-2,-14,-19,-25,-9,4,15,35,
35,18,11,12,12,2,-16,-16,
-5,3,11,27,30,9,4,17,
26,21,-5,-31,-29,1,31,38,
21,-1,-11,-16,-13,11,23,17,
-1,-6,11,30,29,7,3,32,
71,80,56,28,24,46,45,6,
-28,-23,-10,-9,-10,3,13,9,
7,11,23,41,43,35,25,14,
7,24,47,15,-47,-69,-48,-33,
-36,-24,-2,-3,-30,-54,-48,2,
37,24,-5,-27,-13,11,34,45,
28,-2,-14,13,42,44,30,26,
29,13,-12,-13,12,24,-4,-35,
-26,-6,0,-12,-29,-32,-30,-40,
-29,-1,5,2,-1,-6,20,59,
78,60,20,2,-4,-12,-15,-5,
-4,-6,6,6,-22,-28,-7,-2,
-16,-23,-3,30,35,5,-27,-19,
7,19,13,-1,14,40,29,1,
-11,-4,-4,5,-4,-61,-78,-23,
31,28,-2,-21,-19,-3,-7,-39,
-63,-44,6,33,29,11,5,5,
11,17,5,0,5,21,22,13,
10,-13,-48,-68,-58,-49,-59,-56,
-32,-26,-25,-14,-9,2,2,-6,
-1,9,10,5,2,4,-4,-16,
-9,9,23,26,14,7,-2,-3,
17,25,15,19,34,30,14,11,
17,22,7,-28,-39,-13,4,-15,
-37,-24,9,31,17,-30,-53,-42,
-23,-1,-2,-9,1,9,9,9,
22,34,43,42,23,-8,-15,16,
27,13,13,22,23,16,11,19,
27,17,8,5,1,5,-2,-32,
-53,-35,-8,1,-16,-56,-79,-64,
-31,6,24,24,-1,-31,-23,5,
17,2,0,15,26,4,-9,5,
21,18,-28,-35,-10,2,-5,-15,
-13,-6,21,45,64,76,60,28,
6,6,21,25,12,-25,-48,-23,
-3,-9,-9,13,25,-2,-32,-25,
3,35,59,49,2,-40,-47,-39,
-22,-10,-18,-27,-4,10,-27,-50,
-7,47,42,-1,-41,-61,-53,-23,
-8,-27,-43,-24,-2,7,4,1,
-5,-14,-16,-15,-9,7,12,-6,
-50,-66,-17,37,36,0,-14,-20,
-21,-7,5,2,-3,17,30,-4,
-66,-50,40,96,81,27,44,38,
-90,-157,-68,95,175,124,21,-52,
-67,-78,-101,-72,-35,-11,26,23,
-22,-37,-16,-16,-56,-62,-4,55,
70,49,34,32,81,185,115,-147,
-300,-179,85,211,163,79,-2,-56,
-60,-36,-23,-33,-22,4,30,46,
54,48,27,23,34,42,39,26,
14,11,11,-5,-23,-48,-68,-61,
-48,-36,-21,10,29,10,-9,-7,
-11,-36,-57,-53,-32,-7,25,44,
12,-25,-8,32,43,23,-10,-41,
-48,-33,-8,14,7,-8,-10,-10,
-12,-3,20,18,0,-13,-18,-7,
6,22,16,-7,-14,1,26,23,
-6,-47,-66,-46,-22,-3,2,-8,
-13,-10,-15,-21,-5,9,18,10,
3,1,-9,-7,-3,-10,-12,-3,
20,42,47,30,12,9,10,17,
38,26,-12,-17,9,24,7,-21,
-7,30,39,18,-7,-9,2,19,
33,27,-1,-25,-29,-18,5,24,
15,-5,4,25,37,40,27,5,
-6,-11,-17,-13,2,13,12,8,
10,3,-5,3,15,11,-11,-9,
14,-1,-42,-48,-18,24,39,11,
-30,-21,32,47,13,-18,-5,8,
8,5,-4,-10,-3,-3,-31,-49,
-32,4,27,18,-6,-19,-15,-12,
-14,-21,-34,-28,-5,18,20,6,
8,21,11,5,2,-13,-23,-23,
-24,-42,-38,-7,-1,-21,-27,1,
31,13,-28,-55,-66,-33,24,50,
38,15,0,2,21,34,28,15,
8,8,3,-18,-29,-23,-30,-45,
-36,-6,21,13,-6,-1,0,-11,
4,34,49,43,32,36,42,31,
3,4,22,22,20,9,-7,-6,
19,53,62,45,26,5,-15,-9,
15,32,32,14,8,18,17,14,
8,-11,-26,-25,-9,7,17,21,
8,-18,-26,-20,-24,-30,-29,-23,
-17,-11,-7,-12,-15,-7,3,1,
-19,-27,-13,-4,-3,4,9,9,
20,38,44,23,-8,-27,-14,18,
40,38,18,4,-1,-18,-41,-40,
-12,14,21,5,-6,0,-5,-11,
-8,-2,-13,-42,-64,-74,-63,-41,
-22,-11,-19,-26,-27,-26,-20,0,
20,17,10,6,-2,-13,-10,-8,
-8,-4,-2,-3,1,3,-7,-14,
-16,-6,10,15,3,-19,-19,5,
25,32,31,39,51,44,22,13,
23,30,14,-1,1,2,0,-2,
-1,2,1,0,9,17,10,1,
-4,3,16,24,28,18,16,12,
0,-14,-17,-7,-7,-16,-29,-23,
-4,-3,-23,-38,-33,-30,-21,-9,
-17,-10,6,17,35,51,39,1,
-25,-20,2,34,48,24,-7,-8,
11,23,33,36,26,12,0,-1,
4,9,8,6,6,7,-3,-9,
-6,-4,3,9,-3,-37,-51,-48,
-46,-32,-14,10,30,23,9,9,
7,3,13,34,37,8,-19,-24,
-14,-4,-14,-25,-14,-7,-14,-15,
-16,-15,-16,-24,-32,-25,-7,-1,
-2,-8,-7,-1,-7,-12,-15,2,
27,21,3,0,6,4,0,13,
28,28,25,19,12,9,2,-4,
-8,3,16,15,15,20,26,24,
10,-3,-23,-41,-46,-39,-19,-1,
-4,-18,-15,6,28,43,46,43,
46,39,4,-20,-4,16,0,-18,
-10,1,6,-6,-13,2,17,11,
9,10,-9,-27,-17,-6,-18,-16,
14,28,7,-8,-7,-7,-5,6,
4,-2,0,-11,-31,-39,-28,2,
27,36,40,38,26,20,6,-13,
-26,-39,-44,-28,1,17,20,20,
18,27,35,21,1,-8,-4,2,
10,4,-13,-7,5,-4,-14,0,
27,34,11,-14,-12,-3,11,15,
4,-1,-9,-12,10,4,-1,22,
27,37,33,24,9,-6,-4,19,
17,-8,18,35,49,-77,-134,33,
87,98,85,14,-44,-68,-25,15,
11,-24,-36,-12,5,-9,-25,-9,
3,-9,-21,-13,1,24,23,6,
16,33,20,-36,-75,-44,8,13,
-18,-37,-32,-25,-20,-16,-13,-5,
5,11,20,28,17,1,-6,9,
6,-17,-4,12,1,-8,4,21,
10,-11,-14,2,14,11,7,-2,
-7,-2,8,17,17,7,-1,-11,
-14,5,20,20,-3,-20,-6,11,
22,27,7,-29,-35,-14,-2,3,
6,-15,-42,-45,-15,9,-7,-25,
-19,-6,-8,-14,-16,-14,6,31,
46,44,32,33,38,25,1,-3,
1,-6,1,22,31,15,-8,-16,
-10,1,6,-5,-25,-35,-32,-26,
-10,4,6,-1,-5,-1,-3,-16,
-19,-6,1,2,11,16,6,-5,
-2,4,-4,-17,-11,7,4,-10,
-21,-28,-26,-17,-6,-2,1,12,
20,16,4,-11,-14,-6,3,3,
-10,-15,-8,13,23,7,-10,-8,
-5,-13,-24,-38,-27,-8,-11,-21,
-10,13,8,-8,-2,23,29,11,
1,3,1,-9,-8,1,4,-2,
-18,-30,-29,-20,-13,-4,9,4,
-7,0,8,6,11,17,18,6,
-3,-8,-25,-36,-32,-24,-8,6,
10,-4,-35,-46,-26,1,20,20,
20,13,-10,-15,4,5,-3,9,
11,3,-20,-23,6,26,32,30,
15,5,10,8,-1,3,12,8,
-4,5,25,43,43,22,5,-3,
-8,-9,-5,-7,-16,-17,-13,-7,
-8,-8,-1,-10,-19,-16,-11,-10,
-10,-8,0,13,3,-2,2,-5,
-17,-20,-4,7,9,9,12,14,
1,-16,-16,-2,11,20,21,10,
11,21,21,15,10,7,-8,-17,
-16,-17,-16,-15,-6,-7,-27,-29,
-18,-10,-5,9,23,13,-8,-12,
-9,-17,-10,15,33,26,1,-7,
3,12,12,11,17,10,-17,-31,
-12,9,12,5,-18,-33,-17,6,
20,15,13,14,9,12,15,12,
6,-5,-11,-9,-8,-12,-1,21,
16,-3,-16,-11,-4,-8,-3,2,
5,9,15,11,7,9,6,4,
-1,-10,-12,-14,-14,-19,-19,-12,
-1,3,-13,-21,-8,-3,-2,9,
16,10,3,-6,0,5,1,6,
9,10,11,6,-5,-7,5,7,
3,6,11,7,-5,-8,-1,2,
4,11,12,-8,-31,-33,-1,48,
72,53,30,15,2,-8,-2,11,
18,14,19,29,17,-2,-9,1,
19,2,-14,-4,5,17,28,8,
-13,-8,9,30,36,33,32,22,
4,-8,-8,-5,4,19,16,0,
-26,-40,-26,-41,-53,-14,24,21,
0,-5,-4,-7,-8,10,26,15,
2,-1,-1,2,4,5,5,7,
-2,3,27,43,42,23,8,1,
-3,1,2,7,15,18,13,4,
4,20,17,-20,-39,-26,-10,-3,
-4,-10,-9,1,5,6,2,-14,
-35,-44,-47,-40,-24,-13,-7,-4,
-7,-16,-6,7,17,31,29,23,
12,1,-7,-22,-30,-21,-5,7,
9,2,-12,-25,-23,-2,13,6,
-3,3,12,9,9,22,25,7,
-7,-4,5,3,-11,-26,-28,-11,
14,28,17,10,8,2,-9,-23,
-17,7,18,12,8,22,34,27,
17,11,0,-11,-11,-15,-23,-22,
-2,11,4,0,1,-1,-4,-1,
-9,-24,-23,-12,-5,-4,-11,-24,
-22,-6,7,19,21,9,3,9,
23,30,7,-17,-9,0,-8,-14,
-2,13,23,32,25,14,8,8,
13,8,-7,-10,-5,0,13,19,
17,15,14,11,5,6,9,-3,
-22,-31,-39,-46,-37,-19,-7,-6,
-8,-6,-10,-15,-16,-22,-35,-30,
-6,9,8,13,22,19,15,10,
4,-8,-22,-22,-17,-4,7,15,
11,-8,-23,-31,-21,-5,1,4,
2,2,8,13,19,28,29,15,
2,5,17,12,14,19,-2,-26,
-43,-40,-13,4,-13,-38,-33,-22,
-19,-14,-11,-15,-12,-5,-6,-12,
-14,-5,8,12,8,11,15,1,
-16,-13,-2,1,1,3,3,-3,
-3,-2,5,14,21,18,6,0,
2,0,1,6,2,-3,-7,-11,
-13,-10,6,4,-12,-19,-5,10,
7,8,9,6,10,14,25,33,
18,-2,-8,3,14,20,25,18,
-7,-21,0,20,20,17,18,4,
-12,-9,1,4,-1,-7,-19,-30,
-16,9,19,12,-3,-12,-9,-3,
-2,-6,-6,0,-2,-4,-6,-3,
1,1,11,16,-10,-41,-33,-3,
6,-5,-19,-14,2,16,27,13,
-12,-16,-7,-1,4,15,23,16,
8,4,-2,-8,-9,-11,-10,3,
10,7,-11,-26,-20,-9,-11,-16,
-14,-18,-33,-36,-13,2,-8,-12,
-2,13,14,-5,-36,-63,-62,-37,
-4,22,37,30,3,-5,14,31,
30,17,2,-2,4,3,-4,-2,
2,-7,-17,-13,0,2,-8,-16,
-17,-12,-3,13,25,23,11,1,
-2,8,18,14,9,5,2,-5,
-12,-12,-10,-4,3,0,5,8,
-5,-19,-20,-19,-21,-17,-14,-16,
-16,-19,-25,-15,9,33,31,6,
-3,-3,-4,-2,-9,-29,-40,-26,
-5,9,13,10,-1,-5,-1,7,
2,-9,-16,-29,-8,24,19,-7,
-31,-21,8,32,34,16,12,14,
13,8,12,23,23,3,-30,-23,
23,49,34,-2,-28,-42,-39,-18,
6,25,24,21,6,-24,-14,9,
22,9,-21,-20,-15,-27,-30,-5,
-2,-20,-17,-15,-24,-11,22,22,
9,14,2,-16,-1,19,8,-1,
3,-1,-6,-4,2,-3,5,32,
42,19,-6,-20,-28,-31,-24,-2,
12,10,-2,-16,-29,-31,-14,-1,
-3,-5,6,3,-16,-22,-12,3,
-3,-22,-22,-15,-2,0,-7,-6,
-9,-8,-9,-17,-15,-20,-29,-20,
3,-1,-13,-13,-21,-26,-14,3,
-3,-12,5,30,20,-21,-33,-9,
12,3,-5,22,27,-2,-19,-22,
-13,13,37,52,51,29,-4,-19,
-9,8,18,16,9,7,-2,-4,
11,20,18,12,8,4,2,-8,
-26,-32,-36,-26,-4,0,-16,-26,
-11,2,5,-8,-21,-11,11,17,
8,14,31,35,21,13,15,6,
-19,-35,-28,-16,-7,-1,26,51,
27,-19,-27,0,-6,-8,18,19,
7,-10,-30,-38,-34,-28,-18,0,
22,29,15,2,0,2,10,25,
31,17,-10,-23,-17,3,10,-3,
6,32,41,22,3,4,6,7,
18,30,34,30,19,-3,-12,6,
18,18,11,8,15,25,26,16,
4,-13,-19,4,25,33,28,25,
16,-6,-12,-5,-12,-19,-4,16,
29,19,-5,-16,-7,1,10,23,
20,-4,-21,-20,-26,-29,-4,8,
2,1,-5,-19,-18,-14,-20,-13,
3,9,-9,-31,-30,-20,-5,12,
13,-3,-4,7,9,3,-8,-12,
-14,-13,9,30,19,6,6,9,
18,19,7,-3,-11,-6,8,17,
14,8,-1,-9,-18,-14,10,24,
15,-4,-27,-39,-24,-1,8,12,
17,23,26,19,13,21,25,17,
10,9,10,8,-4,-20,-20,-5,
12,24,21,12,9,13,20,20,
10,3,4,-1,-9,-9,6,20,
9,-10,-23,-28,-19,-1,8,2,
1,9,8,-5,-14,-15,-7,5,
17,27,27,6,-22,-27,5,30,
29,20,17,16,12,10,8,11,
12,11,25,32,21,4,-2,0,
-9,-13,-1,5,-7,-17,-17,-18,
-25,-26,-7,14,4,-17,-23,-8,
11,2,-29,-40,-27,-16,-7,6,
12,7,3,2,5,11,14,10,
3,4,7,2,-5,-11,-6,9,
20,16,6,-4,-11,-10,-11,-2,
19,30,21,4,-5,-1,16,35,
34,16,0,-8,-4,7,12,4,
-3,-4,4,10,-5,-32,-40,-28,
-18,-22,-13,6,11,6,-5,-18,
-18,-4,13,30,30,0,-25,-19,
8,21,9,-2,8,18,6,-1,
9,10,-8,-18,0,15,16,14,
-1,-15,-17,-9,2,13,22,22,
7,-11,-16,-4,6,1,-6,1,
12,9,-5,-19,-22,-4,22,36,
35,13,-9,-14,2,24,38,33,
10,-14,-17,-5,4,14,31,42,
29,9,2,4,13,18,10,-8,
-28,-27,-3,16,24,25,22,12,
-3,0,15,12,-14,-28,-16,8,
18,8,-8,-9,3,8,-3,-18,
-16,6,25,24,1,-16,-15,-4,
6,17,15,-5,-24,-28,-19,-12,
-15,-23,-21,-18,-16,-10,-13,-26,
-28,-13,3,3,-2,0,10,20,
13,-4,-8,2,9,8,-2,-10,
-7,-5,-13,-23,-16,-2,6,-3,
-22,-34,-25,-4,10,15,18,17,
14,13,9,5,-2,-10,-13,-6,
2,7,12,18,9,-3,-8,-3,
8,12,9,13,24,26,16,5,
11,17,9,-1,1,9,9,-1,
-10,-8,0,-1,-11,-25,-26,-15,
-3,0,-2,-2,4,19,27,18,
1,-9,-15,-16,-8,3,11,6,
-3,-8,-8,-5,-9,-10,-3,7,
13,8,-2,-2,4,1,-6,-8,
0,5,-1,-4,-5,5,18,11,
-8,-17,-20,-23,-26,-16,-1,12,
7,-1,4,2,-10,-16,-8,0,
-4,-1,3,2,3,3,0,-5,
-2,3,0,1,-3,-17,-27,-22,
-10,-4,-1,2,1,1,-4,-10,
-9,-6,-1,7,10,3,-11,-16,
-14,-4,7,7,-3,-11,-12,-4,
4,13,16,4,-8,-6,6,6,
-5,-4,-4,-8,-2,12,16,10,
-1,-7,-3,0,0,-6,-14,-9,
2,0,-4,9,20,19,12,6,
-1,-10,-18,-30,-40,-32,-20,-9,
6,21,24,13,5,11,10,-3,
-11,-1,11,13,12,7,3,0,
-2,-6,-9,1,14,9,-12,-30,
-26,-18,-17,-13,1,12,11,0,
-15,-28,-36,-32,-10,7,5,-1,
3,9,2,4,15,20,23,20,
22,25,15,-6,-19,-18,-7,5,
16,18,10,-1,-2,5,12,6,
-5,-7,-4,3,10,7,-2,-10,
-13,-13,2,16,12,4,5,10,
7,4,6,11,10,0,-10,-10,
-10,-12,-7,-3,-5,-8,-5,4,
3,-1,1,5,6,11,16,16,
9,4,6,7,11,7,-9,-18,
-14,-4,12,24,22,15,9,7,
-4,-18,-26,-16,-1,6,-4,-7,
2,-5,-17,-9,20,48,41,-1,
-28,-15,3,1,-8,-7,4,13,
4,-8,10,30,16,-11,-24,-21,
-20,-23,-14,1,5,0,-8,-21,
-24,-5,12,3,-26,-36,-17,5,
9,1,-2,4,12,18,19,14,
13,17,15,8,-2,-11,-22,-25,
-11,2,0,-15,-19,-10,-2,-5,
-14,-23,-24,-7,9,5,-6,-5,
8,12,8,1,1,7,4,-4,
-8,2,11,17,21,24,21,11,
3,-5,-15,-12,0,7,5,-3,
-12,-16,-9,-2,-7,-18,-30,-33,
-29,-19,-4,9,12,3,-4,0,
6,5,3,7,7,-1,-1,17,
32,29,15,10,16,21,25,31,
32,24,14,5,3,4,6,11,
10,2,-7,-6,-1,-3,-10,-9,
-8,-10,-15,-19,-17,-11,-1,-1,
-9,-15,-5,13,14,5,7,12,
9,-3,-12,-7,5,4,-10,-13,
-4,2,0,5,14,11,0,-6,
2,9,-1,-15,-13,0,-1,-12,
-11,0,9,13,12,2,-12,-20,
-21,-14,1,14,14,4,-5,-8,
-9,-17,-20,-10,2,2,-3,-9,
-14,-18,-7,9,11,5,2,0,
-6,-14,-15,-7,7,14,12,14,
25,29,19,-1,-20,-27,-18,2,
16,12,-3,-16,-16,-5,9,20,
19,8,-7,-18,-24,-24,-18,-9,
-2,-3,-4,-2,3,5,3,-5,
-9,2,18,17,1,-12,-14,-12,
-6,1,1,1,9,16,14,2,
-6,-6,-2,5,10,10,-1,-11,
-10,-3,3,1,-1,4,12,20,
15,4,-7,-10,-2,5,-9,-27,
-27,-16,-13,-13,-11,-8,-10,-6,
-3,-1,8,13,9,2,-6,-11,
-16,-13,-12,-12,-13,-10,-7,-3,
2,4,0,-5,-8,-5,0,4,
5,-3,-4,9,23,18,1,-8,
0,16,17,11,9,8,5,8,
12,11,4,0,2,8,7,-1,
-10,-16,-14,-10,-4,2,2,1,
0,0,2,-1,-10,-15,-11,-1,
6,2,-2,-1,-2,-3,7,20,
20,11,2,-6,-9,-9,-11,-16,
-23,-25,-17,-3,4,4,3,1,
-6,-12,-9,-7,-12,-16,-9,-2,
0,-6,-19,-29,-26,-12,-3,-6,
-8,2,13,18,16,9,6,2,
-3,-13,-23,-20,-12,-13,-15,-7,
4,6,4,3,1,0,0,-7,
-13,-12,-7,2,12,19,15,6,
-1,0,3,-3,-9,-9,-1,-3,
-9,-7,5,17,21,25,19,5,
-3,-3,-2,-2,1,4,4,-5,
-13,-11,-3,2,-4,-14,-16,-11,
-12,-14,-13,-13,-12,-7,0,2,
-2,-4,-6,-10,-4,11,16,7,
-6,-16,-23,-22,-13,-4,0,-1,
-4,-8,-14,-14,-4,10,15,13,
13,9,-2,-10,-8,-2,7,16,
15,5,0,6,13,12,3,-7,
-11,-9,-4,6,13,11,7,14,
18,9,-2,-2,-3,-10,-13,-11,
-6,-5,-6,-4,-5,-8,2,11,
6,-2,2,17,23,20,14,12,
9,8,11,17,17,12,6,3,
8,15,15,10,10,11,5,-5,
-2,9,15,8,-1,-8,-8,-4,
3,10,14,13,12,7,1,-4,
-1,9,17,18,15,12,8,4,
3,13,22,23,14,3,-6,-9,
-2,4,3,-6,-10,-9,-5,4,
15,19,16,10,8,8,7,0,
-1,-1,-7,-15,-15,-8,4,14,
11,3,-4,-4,0,6,5,0,
-1,2,5,4,7,11,12,7,
6,9,10,9,5,-2,-7,-7,
-7,-8,-2,5,4,-1,-3,-5,
-9,-10,-12,-9,-1,6,7,0,
-11,-14,-5,8,12,4,-7,-6,
4,6,1,-3,-3,-3,-3,0,
4,9,5,-4,-10,-12,-11,-1,
10,13,8,-4,-8,-7,-11,-17,
-18,-16,-16,-14,-5,5,8,5,
4,8,16,15,7,-5,-12,-14,
-9,0,-4,-16,-19,-12,5,22,
27,11,-12,-17,-1,17,24,12,
-6,-10,3,17,16,1,-13,-20,
-16,-12,-7,-4,2,5,-2,-15,
-23,-15,-2,3,0,7,20,21,
11,-5,-14,-14,-10,-5,2,6,
5,-1,-8,-4,5,10,12,7,
-5,-13,-14,-8,-3,-2,-4,-1,
6,12,16,14,11,8,7,6,
0,-1,3,7,1,-5,-2,6,
10,8,5,3,-1,-5,-11,-14,
-11,-11,-13,-13,-14,-8,0,-2,
-15,-21,-11,4,10,3,-7,-12,
-10,-4,3,10,12,12,9,-9,
-26,-19,5,27,32,23,15,7,
-8,-21,-20,-11,-2,7,13,12,
5,-4,-10,-7,-1,-1,-4,-4,
-6,-10,-18,-21,-21,-20,-12,10,
26,23,13,6,4,3,-2,-9,
-8,2,14,13,-3,-12,-8,1,
1,-5,-6,-1,6,11,11,16,
20,8,-10,-13,2,13,4,-9,
-10,-1,4,7,8,6,-1,-11,
-20,-23,-16,-2,3,-1,-2,5,
7,3,5,11,9,-6,-14,-8,
-4,-8,-8,2,13,14,5,-3,
4,14,12,-2,-12,-8,-4,-9,
-8,-1,4,11,17,21,22,15,
8,4,8,10,10,10,17,19,
8,0,-2,1,-1,-4,-7,-8,
-8,-8,-5,-1,4,12,18,8,
-2,-4,-1,2,7,12,8,-5,
-9,-2,5,8,15,25,27,18,
7,3,-2,-7,-3,1,1,0,
-1,-10,-23,-28,-26,-22,-22,-27,
-24,-11,-4,-5,-6,5,12,8,
-2,-7,-7,-10,-3,16,21,0,
-23,-24,-4,12,14,8,5,2,
-5,-7,-6,-8,-13,-10,3,12,
1,-15,-20,-7,20,43,49,35,
11,-4,0,7,-1,-18,-28,-24,
-9,13,32,31,22,15,14,9,
-1,-9,-13,-7,10,20,5,-14,
-13,3,14,17,13,4,-5,-10,
-6,-2,4,10,6,-4,-8,-3,
4,3,-5,-11,-11,-7,-1,7,
6,-6,-20,-19,-8,-1,1,1,
-2,-2,2,0,-6,-6,-3,0,
5,12,11,4,-5,-2,7,13,
6,-4,-8,-5,-4,-4,-1,2,
-2,-4,1,6,5,-4,-8,-6,
0,1,-1,-3,-2,2,6,12,
14,8,1,-2,-5,-6,-5,-4,
-1,9,14,5,-3,1,9,5,
-8,-13,-10,-8,-13,-17,-14,-8,
-4,-1,5,5,1,-4,-9,-12,
-8,-5,-3,-6,-6,0,6,6,
0,-4,-8,-7,-3,-3,-5,-11,
-16,-10,5,14,8,-6,-11,1,
19,25,19,12,3,-7,-11,-11,
-6,-3,-4,-9,-17,-14,1,11,
9,3,1,4,1,-1,2,11,
17,17,17,19,13,5,7,11,
5,-2,-2,6,8,4,-6,-14,
-18,-12,-2,3,1,1,3,-1,
-11,-15,-14,-16,-23,-17,-4,2,
0,-1,2,6,12,17,19,18,
13,3,-3,-2,1,-1,-8,-11,
-9,-3,0,0,0,5,10,12,
11,10,7,3,3,5,5,8,
11,11,6,-4,-8,-6,-1,1,
2,1,3,4,4,-1,-6,-6,
-3,3,5,3,3,4,5,1,
-7,-11,-9,-7,-10,-13,-12,-10,
-9,-8,-8,-5,-2,-3,-7,-10,
-9,-7,-2,5,14,10,-5,-17,
-16,-6,6,13,14,12,0,-11,
-13,-7,-1,1,8,13,10,0,
-9,-11,-10,-10,-8,1,4,3,
-1,1,4,6,7,5,2,-3,
-6,-3,1,2,4,8,14,17,
12,6,6,9,10,9,6,0,
-5,-6,-2,3,5,4,4,-1,
-8,-11,-8,-8,-8,-5,-1,1,
-1,-3,-3,0,3,1,-3,-6,
0,3,4,1,-2,-2,4,8,
7,4,1,2,7,11,16,18,
17,10,-6,-13,-8,-1,1,1,
1,1,4,8,9,3,-5,-10,
-9,-4,-3,-3,-2,2,7,6,
3,3,2,0,-1,1,1,-1,
-5,-10,-12,-16,-17,-11,-1,1,
-1,-5,-12,-16,-7,6,10,4,
0,-1,-5,-9,-10,-6,-1,8,
8,3,-7,-13,-10,-3,4,7,
9,5,1,1,3,0,-8,-14,
-10,-1,9,12,6,-2,-5,1,
10,11,2,-4,-3,-3,-7,-11,
-9,3,16,18,10,1,-5,-6,
-5,-5,-4,4,12,8,-7,-15,
-10,2,7,3,-4,-4,5,14,
5,-5,-5,2,5,2,0,4,
4,-2,-9,-8,-3,-2,-2,0,
3,8,9,5,1,1,2,0,
-4,-6,-3,-2,-3,-7,-5,2,
10,11,8,3,4,11,15,11,
5,0,-1,0,0,-2,-6,-7,
-7,-9,-13,-19,-18,-9,-1,-1,
-4,-7,-3,6,10,6,2,3,
7,8,8,8,11,11,8,2,
-6,-9,-9,-10,-15,-15,-9,-3,
-1,-3,-3,-2,0,-2,-6,-5,
2,10,10,4,-4,-11,-9,0,
4,-2,-3,3,9,8,1,-5,
-8,-5,-2,2,5,5,2,-1,
2,3,3,7,14,17,10,-1,
-11,-9,-2,-3,-8,-12,-9,-7,
0,6,4,-7,-13,-8,3,10,
10,10,9,4,0,-1,1,4,
7,9,11,9,5,4,6,3,
-6,-12,-9,-4,-1,3,4,3,
1,-5,-12,-13,-7,-4,-4,-3,
-2,2,10,12,8,4,7,11,
18,19,11,0,-10,-13,-10,-2,
8,10,13,11,3,-6,-11,-7,
-3,-6,-11,-12,-5,2,1,-3,
0,4,3,2,5,6,4,-1,
-2,-2,-2,0,2,0,-2,3,
13,19,14,1,-10,-10,-2,3,
4,1,-1,-2,0,-1,1,5,
4,-7,-16,-14,-6,-1,-4,-7,
-7,-2,0,2,1,-1,3,10,
10,3,-5,-4,1,2,1,-1,
-3,-4,-2,0,2,-1,-1,-3,
-7,-8,-5,-2,-1,-2,-4,-4,
0,4,3,2,4,7,7,6,
5,1,-7,-7,1,8,8,6,
6,9,9,4,0,-1,2,9,
15,13,6,-2,-5,0,4,3,
-1,-2,0,1,-3,-14,-20,-16,
-7,6,13,11,2,-9,-13,-9,
-5,-3,-2,2,3,-1,-2,1,
2,2,2,6,7,4,-1,-5,
-5,-5,-2,1,3,2,-1,-6,
-13,-17,-8,7,13,6,-8,-15,
-12,-4,3,8,7,2,-1,-1,
1,-2,-9,-12,-12,-6,1,2,
1,-1,-1,-1,-5,-7,-11,-11,
-9,-2,5,10,11,6,2,3,
1,-3,-7,-5,0,6,7,6,
4,2,-2,-6,-10,-17,-22,-18,
-10,-4,-3,-2,-3,-1,1,4,
4,3,1,0,-3,-9,-16,-19,
-15,-6,4,6,1,-4,-1,4,
8,6,3,3,-3,-12,-16,-13,
-8,-5,-5,-7,-6,-2,2,3,
4,5,6,10,14,15,8,1,
1,6,6,3,4,5,9,11,
7,-4,-13,-13,-7,0,2,-2,
-7,-2,5,10,9,-1,-6,-5,
-3,-3,-3,0,3,4,7,8,
6,0,-1,2,2,-3,-8,-5,
-1,6,9,7,9,14,16,13,
6,1,-2,-5,-5,-3,-2,-1,
-3,-4,-3,-1,6,13,13,8,
0,-4,-3,-2,-2,-3,-2,1,
-1,-5,-11,-8,-1,2,0,-7,
-12,-13,-12,-9,-6,-6,-6,-4,
0,3,5,6,3,-2,-3,-1,
5,7,3,-4,-6,-3,-2,-3,
-3,-2,-3,-3,0,3,5,6,
5,5,5,4,5,4,3,2,
4,9,10,6,0,-4,-4,2,
6,5,1,-2,0,5,10,10,
6,-2,-6,-3,2,3,5,6,
5,0,-4,-4,-4,-3,0,5,
8,6,0,-7,-13,-10,-3,-2,
-2,1,3,2,0,-2,-3,-6,
-7,-4,1,5,4,0,2,6,
7,3,-3,-7,-8,-5,-3,-5,
-6,-8,-9,-8,-8,-5,0,5,
5,3,2,0,-3,-3,0,3,
3,3,3,3,2,3,4,3,
5,7,6,5,4,4,4,3,
1,-1,2,6,5,-2,-6,-5,
1,3,2,-5,-9,-10,-9,-7,
-2,3,6,5,-2,-6,-4,-1,
4,7,6,3,-1,-4,-7,-11,
-9,-1,3,2,-2,-3,-1,4,
6,1,-6,-9,-5,2,5,2,
-3,-6,-6,-3,-3,-5,-9,-8,
-5,-6,-7,-11,-10,-5,6,13,
11,6,2,3,7,9,4,0,
-2,-2,-4,-6,-2,3,7,7,
3,-2,-5,-6,-3,-2,0,3,
3,-1,-3,-1,3,7,9,6,
0,0,5,10,12,10,5,5,
9,12,8,4,0,2,6,7,
7,7,10,12,12,10,4,-4,
-7,-4,0,2,1,0,-4,-3,
0,4,3,1,-2,-6,-9,-7,
-1,2,1,-2,0,2,3,2,
5,9,9,6,3,5,5,0,
-8,-12,-10,-4,-1,-2,-5,-6,
-4,-3,-3,-3,-1,0,0,-2,
-3,-7,-11,-11,-10,-9,-8,-7,
-6,-5,-6,-7,-7,-9,-4,4,
8,10,4,2,-1,-1,1,2,
4,3,-1,-5,-4,1,3,6,
6,5,5,5,8,14,17,12,
4,0,3,9,10,7,5,4,
6,2,-3,-5,-2,-1,1,1,
1,-1,-2,-2,-1,3,7,9,
8,9,9,8,5,3,0,0,
-1,-3,-7,-8,-5,-2,-6,-7,
-7,-4,-2,-3,-5,-2,1,-2,
-6,-9,-12,-11,-7,-5,-2,1,
3,2,0,0,3,7,7,2,
-6,-9,-7,-4,1,0,-4,-7,
-5,0,-1,-4,-6,-6,-5,-3,
-1,3,8,10,8,3,-1,-4,
-3,0,3,5,5,0,-3,-4,
-4,-5,-5,-3,-3,-4,-5,-5,
-4,-3,-1,-1,-6,-9,-5,2,
2,-1,-3,0,2,1,-1,-6,
-11,-13,-10,-5,3,6,7,5,
1,0,1,0,-1,1,7,9,
6,3,-2,-5,-6,-5,-2,1,
-2,-5,-7,-4,2,5,5,5,
4,2,-3,-6,-2,3,3,4,
3,3,3,2,-2,-5,-4,0,
2,2,1,-1,-4,-7,-5,-2,
2,2,0,-3,-3,-1,5,8,
7,1,-3,-2,1,2,5,8,
9,8,5,6,5,3,2,0,
-2,-4,-1,3,6,8,4,0,
-4,-3,0,5,6,6,3,-3,
-10,-10,-4,1,1,-1,-4,-6,
-7,-6,-3,0,0,-2,-4,-4,
-4,-1,1,2,4,10,14,15,
9,5,5,7,6,4,-1,-4,
-3,-3,-1,1,4,6,7,6,
3,3,3,1,-1,-2,0,4,
3,2,1,2,3,6,9,8,
5,2,-2,-4,-7,-5,-2,-3,
-8,-12,-11,-4,-1,-3,-5,-3,
-2,-5,-6,-2,1,4,5,2,
0,-1,0,-4,-6,-6,-5,-2,
0,0,-3,-4,-5,-4,-2,0,
0,-2,-4,-3,0,1,1,-1,
-1,0,3,9,10,4,-6,-11,
-10,-3,6,7,3,-2,1,3,
2,-3,-6,-6,-1,2,3,1,
-1,2,6,7,3,1,0,0,
-2,-6,-8,-5,1,4,4,1,
-2,-3,-1,3,8,8,4,3,
5,3,2,3,5,4,4,2,
0,-1,2,3,3,0,-4,-6,
-3,-1,-1,-5,-6,-6,-4,-3,
-5,-4,-5,-4,-1,3,2,-3,
-6,-4,2,4,0,-4,-6,-4,
-3,-2,-2,-2,-3,-3,0,1,
4,8,8,2,-3,-2,2,7,
9,8,4,-3,-4,0,1,3,
6,4,-2,-8,-8,-4,-2,-2,
-2,-4,-5,-5,-5,-2,0,2,
5,6,4,-2,-6,-4,-1,2,
4,5,4,2,-2,-5,-3,-1,
-1,-1,-4,-6,-8,-7,-4,-1,
4,9,9,3,-1,-3,-3,-2,
-1,-2,-5,-7,-6,-2,1,1,
2,1,-2,-5,-2,3,8,10,
7,1,-2,-1,3,5,4,3,
4,5,2,-2,-2,0,2,3,
3,-1,-3,-8,-8,-5,-2,2,
4,3,2,1,0,-1,-2,-3,
-3,-3,-1,1,5,4,2,-2,
-4,-10,-12,-9,-2,1,3,3,
3,2,0,1,2,6,9,8,
4,2,4,5,4,0,-2,-1,
3,7,5,3,-1,-2,-1,-1,
-2,-3,-4,-2,0,2,1,1,
3,2,-3,-5,-6,-5,-3,-1,
3,9,11,10,8,8,8,6,
5,1,-1,-1,0,2,2,1,
2,3,4,5,7,9,10,8,
2,-1,-3,-1,-1,-3,-4,-2,
-1,0,-1,-1,-2,-5,-5,-4,
-5,-5,-4,-2,-3,-3,-4,-2,
-2,-2,-1,2,5,6,6,3,
1,0,0,0,1,2,3,2,
1,-1,-4,-5,-5,-7,-6,-6,
-2,0,2,5,7,5,2,2,
4,6,8,7,1,-7,-9,-5,
0,1,0,0,2,6,6,2,
-2,-5,-5,-4,-2,-1,0,0,
2,4,6,6,2,-3,-6,-8,
-8,-6,-6,-7,-7,-5,0,7,
7,3,-1,-5,-6,-5,-2,3,
4,4,5,5,3,0,-2,-1,
1,1,-3,-6,-5,-2,-2,-3,
-3,-3,-2,-2,-2,-1,1,2,
5,4,2,0,0,-1,0,2,
3,-1,-4,-5,-3,-4,-6,-9,
-7,-3,-1,-3,-4,-4,-4,-4,
-4,-3,-3,-3,-1,0,0,-1,
-3,-2,1,1,3,2,2,3,
1,3,5,5,3,-2,-7,-9,
-7,-4,0,-1,-3,-2,1,2,
1,-1,-1,1,2,3,2,0,
-1,-1,-2,0,5,8,8,3,
0,-1,-2,-1,1,0,0,-1,
-1,0,1,3,3,2,1,-2,
0,2,4,7,6,4,3,-1,
-1,-2,1,2,0,-1,-1,-1,
-2,-1,0,1,3,5,9,8,
4,2,1,1,1,-1,-1,2,
3,1,-3,-5,-6,-6,-5,-7,
-9,-5,-1,2,0,-1,-4,-5,
-6,-4,1,6,8,7,2,0,
-1,0,2,2,2,2,0,0,
0,1,3,4,6,5,4,2,
-2,-4,-4,-1,1,3,3,3,
3,1,0,-1,0,0,1,5,
8,9,6,2,1,1,3,4,
6,7,8,8,7,6,5,5,
6,3,0,-1,-1,2,4,6,
8,9,10,8,6,2,-1,0,
-1,-3,-2,-2,-1,-2,2,4,
6,6,6,6,7,5,5,2,
-1,-3,-4,-3,-1,1,2,3,
6,6,4,3,3,1,0,-2,
-1,1,1,3,4,3,-1,-2,
0,2,-1,-4,-6,-7,-4,-1,
-1,-2,-2,0,4,7,7,2,
-4,-7,-7,-5,-3,1,3,3,
2,1,1,3,5,6,4,2,
2,3,4,5,7,10,11,11,
6,1,-4,-6,-5,-3,-2,-1,
-2,-2,-2,1,3,2,0,-2,
-2,-4,-4,-3,-4,-4,-4,-4,
-2,-1,1,3,3,2,2,1,
0,-2,-1,2,3,2,-1,-3,
-4,-3,-3,-4,-4,-2,-1,-1,
0,0,2,4,5,3,1,-1,
-6,-9,-5,-1,2,1,-1,-2,
-4,-2,1,2,2,1,0,-1,
-2,0,2,1,0,-3,-5,-7,
-8,-6,-3,-2,-4,-4,-4,-3,
-2,-2,-3,-5,-6,-5,-5,-3,
1,4,7,6,5,5,2,1,
3,6,8,7,5,1,-1,-3,
-2,-1,2,3,3,3,0,-3,
-3,-1,2,4,2,2,1,2,
3,2,-1,-3,-2,0,0,-1,
-2,-4,-3,-2,-3,-5,-6,-5,
-3,0,2,3,4,4,3,0,
-4,-4,-1,4,7,7,6,4,
2,-1,-3,-5,-7,-7,-6,-4,
-3,-2,-3,-5,-5,-6,-6,-4,
-3,-3,-2,-3,-4,-4,-4,-3,
-1,0,0,-1,-4,-5,-6,-7,
-7,-6,-4,-2,1,1,-2,-5,
-7,-6,-5,1,5,6,2,-2,
-2,3,5,6,5,3,1,0,
0,0,-2,-3,-2,1,2,2,
-1,-2,-3,-3,0,3,5,4,
2,2,5,6,5,4,4,5,
5,3,1,-2,-1,1,2,2,
1,-1,-2,0,3,2,2,1,
0,-1,-3,-3,-3,-2,-2,-5,
-7,-7,-4,-1,1,0,-1,-2,
-1,-2,-3,-5,-7,-9,-8,-4,
3,6,5,4,3,5,6,6,
4,2,-3,-7,-7,-2,2,2,
0,-1,-1,0,2,4,2,0,
0,0,2,3,1,0,-4,-8,
-8,-3,2,5,5,2,1,1,
0,-1,-4,-6,-4,-2,-3,-5,
-8,-8,-6,-2,1,3,1,-2,
-6,-8,-8,-4,1,3,3,4,
-1,-3,-5,-4,-2,-2,-3,-5,
-4,-2,-1,-1,1,3,7,5,
-2,-6,-5,-2,1,3,4,3,
3,3,2,3,5,4,3,0,
-2,-1,0,-1,-4,-5,-6,-5,
-1,2,3,2,1,1,2,2,
4,4,5,6,5,2,0,0,
-1,-1,-3,-2,0,2,4,4,
2,0,0,2,3,1,-5,-7,
-5,1,5,5,4,3,2,0,
-1,-1,0,2,0,-1,-1,-1,
-1,-3,-3,-5,-5,-2,-1,-1,
-1,-3,-1,-3,-3,-4,-2,-3,
-2,2,4,5,2,1,-1,-2,
-4,-3,-2,1,2,1,0,0,
1,2,0,-1,-3,-4,-7,-7,
-5,-3,-1,-2,-4,-4,-2,0,
0,-1,-3,-5,-5,-3,-1,-1,
-2,-4,-3,-2,0,0,1,3,
7,5,3,1,1,1,1,-1,
-2,0,4,6,5,4,1,1,
1,2,4,4,2,0,0,1,
3,2,1,0,0,0,1,2,
2,2,2,2,1,0,-1,-1,
-1,-1,1,0,-3,-5,-6,-5,
-4,-2,-2,-5,-7,-8,-5,-3,
0,0,0,-1,-2,-1,2,3,
2,1,1,2,1,0,-1,-1,
0,4,5,5,3,1,0,-1,
1,1,-1,-3,-3,-3,-2,-1,
-1,-2,-4,-2,-2,-1,1,2,
2,0,-2,-3,-4,-5,-5,-3,
-1,1,3,3,0,-1,-1,-1,
-1,0,-1,-1,-4,-6,-7,-6,
-5,-3,-3,-2,-2,-4,-5,-5,
-3,-1,0,0,-3,-5,-7,-5,
-1,2,3,1,0,-1,-1,-1,
0,2,1,-1,-2,-6,-5,-4,
0,2,0,-1,-3,-3,-4,-5,
-5,-2,1,1,0,-3,-4,-6,
-7,-7,-6,-6,-4,-1,0,-1,
-5,-7,-6,-4,-1,1,0,-1,
0,1,3,4,5,0,-5,-6,
-6,-2,0,2,1,-1,-3,-4,
-3,-3,-4,-3,-3,-3,-1,-1,
0,0,2,5,5,5,5,5,
5,4,3,1,1,0,1,1,
0,-2,0,2,2,3,3,2,
2,1,-1,-2,-1,0,2,1,
-1,-2,-1,-1,-1,-1,0,0,
-1,-2,-1,2,1,1,2,3,
7,7,5,3,2,1,4,4,
2,-2,-4,-1,0,0,0,-1,
1,1,0,-1,-2,-1,1,1,
0,-1,-4,-6,-6,-6,-3,0,
2,3,2,1,0,-1,0,0,
1,1,2,2,1,0,0,2,
2,1,1,2,2,1,1,2,
3,5,4,3,2,2,2,1,
0,1,1,3,4,6,6,6,
7,7,6,2,1,0,0,-1,
0,1,2,2,0,-1,-1,-1,
3,5,5,2,-1,-1,1,2,
2,1,1,1,3,2,1,0,
0,1,-1,-2,-1,0,2,3,
2,-1,-1,0,2,3,1,0,
0,-1,-2,-3,-2,-1,0,2,
3,3,2,0,0,2,3,4,
2,3,2,2,3,4,2,2,
3,0,-2,-3,-1,2,3,3,
2,1,0,2,4,3,2,1,
-1,-2,-2,-2,-5,-2,1,1,
0,-1,-1,-3,-4,-4,-2,1,
4,2,0,-4,-5,-5,-3,-1,
2,3,5,4,3,2,2,2,
2,2,4,6,7,5,3,2,
3,4,5,6,5,3,2,3,
4,5,4,2,-1,-3,-4,-2,
0,3,4,3,1,-2,-3,-4,
-2,2,4,5,4,3,2,2,
1,1,1,2,3,0,-1,-1,
0,0,0,3,4,4,3,3,
4,5,4,3,1,1,-1,-2,
-3,-2,-1,-1,1,2,2,2,
1,-1,0,0,1,0,0,-1,
1,1,0,0,0,0,0,2,
4,5,2,-2,-3,-2,-1,0,
1,1,0,0,1,2,4,4,
1,-1,-2,-1,-1,0,1,2,
2,2,2,3,1,0,0,-1,
-1,0,0,0,0,-3,-5,-5,
-3,-1,-1,1,2,4,5,2,
-1,-3,-2,-1,0,1,-1,-1,
-1,-2,-3,-3,-3,-3,-2,-3,
-2,-1,2,4,5,3,0,-2,
-3,-2,-2,0,1,0,-2,-3,
0,2,4,4,4,3,1,1,
3,6,7,5,4,2,0,0,
2,3,4,4,5,6,5,5,
3,2,1,0,0,1,2,2,
2,0,-1,-1,-1,-2,-1,-1,
0,1,2,3,4,4,3,1,
0,-2,-2,0,0,-1,-2,-2,
-3,-4,-4,-4,-2,0,0,1,
1,2,2,0,0,2,2,2,
1,0,1,4,5,4,3,2,
2,3,1,0,-2,-3,-2,0,
2,3,3,1,2,2,2,1,
-1,-2,-2,-2,-2,-3,-2,-2,
-2,-1,2,4,3,2,2,0,
0,0,-1,-2,-4,-4,-3,-1,
-1,0,-1,-2,-1,3,3,2,
-1,-2,-4,-7,-5,-3,0,2,
4,3,0,-4,-6,-7,-6,-5,
-3,-1,0,0,2,3,4,2,
1,-2,-4,-4,-3,-2,-1,-2,
-3,-3,-3,-1,0,2,3,5,
5,2,-1,-2,-2,0,1,2,
2,2,1,1,0,0,0,1,
-1,-1,0,1,-1,-2,-3,-1,
-1,0,0,-2,-3,-5,-4,-2,
-2,0,1,2,2,3,2,2,
3,4,4,1,-1,-2,-1,-2,
-1,0,1,1,-2,-3,-4,-3,
-1,-1,0,0,-1,-1,-1,-2,
-1,-1,0,0,-1,-2,-2,-2,
-1,1,0,-1,-2,-3,-1,1,
0,0,-1,0,1,1,1,0,
-1,-1,-2,-1,-2,-2,-1,0,
3,4,4,4,5,4,1,2,
2,2,2,0,-2,-1,1,3,
5,6,5,5,3,2,2,4,
5,2,0,-1,-2,-2,-2,-1,
0,2,3,2,1,0,-1,-2,
-2,-1,-2,-2,-2,-1,-2,-3,
-2,0,3,3,1,-1,-2,-1,
1,2,2,2,2,0,-2,-3,
-2,-3,-3,-4,-3,-3,-1,0,
-1,-2,-3,-4,-2,1,3,3,
4,3,1,-3,-4,-3,-2,0,
1,3,3,3,1,0,0,0,
0,1,3,3,1,0,-1,-1,
0,1,0,0,-1,-1,-1,-1,
0,0,-1,-1,-1,1,3,4,
3,1,0,-2,-2,-2,-2,-3,
-4,-2,-1,0,0,1,0,0,
0,1,2,3,3,0,-1,-1,
1,1,0,-2,-2,0,0,1,
1,2,1,2,0,0,-1,-2,
-4,-4,-4,-4,-2,1,1,2,
0,-1,0,1,3,2,2,1,
1,1,0,0,0,0,0,1,
0,1,0,-1,-3,-3,-3,-1,
1,2,0,-2,-2,-2,-1,-1,
-2,-2,-3,0,1,1,1,-1,
-4,-5,-5,-3,-3,-4,-4,-5,
-3,-1,2,3,2,2,1,0,
-1,-2,-2,-1,0,0,-2,-2,
-4,-3,-1,2,2,2,1,0,
-1,-3,-4,-5,-5,-3,-1,0,
0,1,0,-1,-2,-3,-4,-3,
-2,-3,-4,-5,-5,-4,-1,1,
2,3,2,0,0,-1,-1,-1,
-4,-5,-5,-2,0,1,1,0,
-2,-3,-2,-1,0,2,1,0,
-2,-3,-3,-3,-1,1,3,4,
2,0,-2,-2,-1,0,-1,-2,
-4,-4,-3,-3,-2,-1,0,2,
2,2,3,0,-1,-3,-1,1,
0,0,0,-1,0,2,3,1,
0,1,3,3,0,-1,-2,-1,
1,1,1,1,1,3,2,1,
-1,-1,-2,-1,-2,-1,-1,0,
-1,-2,-4,-2,-3,-2,-1,-4,
-5,-6,-4,-2,-3,-2,-2,0,
1,3,0,-1,-3,-2,-1,0,
-1,0,0,0,1,1,1,1,
2,1,1,1,2,0,-2,-1,
0,1,2,2,2,2,2,1,
1,2,2,2,1,2,3,4,
3,2,0,0,2,2,2,0,
0,0,2,3,3,0,-1,-2,
-1,0,-1,-1,-1,-1,1,2,
3,4,4,1,-1,-1,1,3,
4,3,1,0,1,1,0,-1,
-1,-2,-2,-1,-1,1,2,0,
-1,-1,0,2,2,1,0,1,
1,1,0,-1,-1,-2,-4,-4,
-5,-5,-4,-2,0,2,1,-2,
-2,-1,0,2,1,-1,-2,-2,
-1,0,0,0,0,1,3,4,
6,5,4,1,0,-1,-2,-1,
-1,0,1,0,-1,-1,-1,0,
-1,-1,-1,0,1,1,0,-2,
-3,-4,-4,-2,0,-1,0,0,
1,2,1,-1,-1,1,2,3,
2,1,0,1,2,3,2,2,
1,0,0,1,0,-1,-2,-3,
-2,-2,-1,-1,-2,-1,0,3,
4,3,3,1,1,0,2,1,
1,-1,-1,-2,-3,-3,-5,-5,
-3,-1,0,-1,-2,0,0,1,
2,3,2,2,2,1,2,2,
2,3,1,0,-1,-1,-2,-2,
-1,0,1,2,1,-1,-2,-2,
0,0,0,0,0,1,1,0,
-1,-1,-1,-1,1,1,0,-1,
-1,-1,-1,0,0,0,-1,-1,
-1,0,2,3,3,2,1,-2,
-2,-1,0,1,0,-2,-2,-2,
-2,-1,-1,0,2,3,3,2,
2,2,1,-1,-2,-3,-2,0,
1,0,1,-1,-2,-2,-1,0,
2,1,0,-2,-2,-2,-3,-2,
-2,-3,-2,-1,0,-2,-2,-3,
-2,-2,-2,-3,-4,-4,-4,-5,
-3,-2,0,1,2,2,2,2,
2,1,-1,-2,-1,-1,0,-1,
0,0,1,2,2,2,0,1,
0,0,0,-1,-2,-3,-3,-3,
-1,1,1,0,-2,-1,0,0,
-1,-1,-2,-2,-2,-3,-2,0,
2,2,3,2,1,1,1,2,
0,0,-2,-1,1,1,2,1,
2,1,2,3,4,1,0,-1,
0,0,1,2,2,-1,-2,-2,
-2,0,1,1,-1,-2,-1,1,
1,0,-1,-3,-4,-3,0,1,
1,0,0,0,0,1,1,2,
2,2,2,1,0,0,1,2,
4,3,1,-1,-1,0,0,1,
0,0,-2,-1,2,3,4,3,
1,0,-1,-1,0,1,0,-1,
1,0,1,2,3,3,1,0,
-3,-3,-1,0,1,0,-2,-4,
-4,-3,-2,-2,-2,1,0,0,
-1,-2,-4,-4,-5,-2,-1,0,
1,1,2,0,0,-1,-1,1,
0,1,1,1,1,0,-1,1,
2,4,3,2,1,0,0,0,
-1,-1,-1,0,0,-2,-1,0,
0,0,-1,-2,-3,-3,-2,-2,
0,0,-1,-2,-5,-4,-4,-3,
-2,-2,-3,-2,-2,-1,-1,0,
1,0,1,1,1,-1,-2,-3,
-3,-1,0,0,0,-1,-1,-2,
-1,-1,-1,-1,-2,0,1,2,
2,2,3,3,2,1,1,0,
1,0,1,1,0,0,0,1,
0,0,1,2,1,1,-1,-1,
0,1,2,2,2,0,0,0,
0,2,2,3,2,2,2,0,
0,0,0,-1,-2,-3,-1,-1,
1,1,1,1,0,0,1,0,
1,0,-2,-3,-2,-1,3,4,
5,4,3,2,1,1,1,1,
-1,-2,0,1,3,1,1,-1,
-1,-2,-2,-3,-3,-1,-1,-1,
-1,-2,-2,-2,-2,-1,0,0,
0,-2,-4,-3,-1,2,5,5,
4,2,0,-1,-2,-1,-1,0,
-1,-2,-1,-1,0,1,0,0,
1,0,-1,-1,0,0,-1,-1,
0,1,0,0,-1,0,1,1,
0,0,0,1,1,0,0,-2,
-1,-1,1,2,1,1,1,0,
1,1,2,1,1,-1,-1,-1,
-2,-1,1,1,1,2,1,2,
1,0,0,0,0,0,1,1,
2,0,0,1,2,3,1,1,
0,0,0,0,0,0,1,1,
0,1,2,3,2,2,2,2,
1,1,1,1,1,2,3,3,
2,1,1,1,2,1,-2,-2,
-1,2,2,2,1,0,-1,-1,
0,0,0,0,-1,-1,0,2,
1,1,-1,-2,-2,-2,0,0,
0,1,1,0,1,1,2,1,
1,1,0,-1,-1,0,0,-1,
0,1,2,1,-1,-2,-2,-1,
0,-1,-1,-1,0,1,2,2,
2,0,-1,-1,-2,-3,-2,-2,
-1,0,0,1,1,1,1,1,
1,1,2,1,-1,-2,-2,0,
1,2,1,1,0,0,0,1,
1,1,-1,-1,-1,-1,0,1,
0,0,1,0,1,2,2,1,
1,1,1,2,2,2,2,2,
2,1,2,2,1,1,0,-1,
0,0,0,0,1,0,0,1,
1,1,1,0,0,-1,-1,-1,
-2,-2,-2,-2,-1,-2,0,0,
1,1,0,-1,-1,-1,-1,0,
0,-1,-1,-1,0,1,0,0,
0,-1,-2,-2,-2,-3,-3,-2,
-3,-3,-3,-3,-2,-2,-3,-4,
-3,-3,-1,1,1,2,1,1,
0,-1,-2,-1,0,0,1,3,
3,2,2,2,2,2,2,1,
0,0,0,1,1,2,2,0,
0,1,2,3,4,4,4,2,
1,0,0,-1,0,1,1,2,
2,1,-1,-1,0,1,1,0,
0,0,0,-1,0,1,3,2,
3,1,1,0,1,2,2,1,
0,1,1,1,2,1,0,-1,
-1,0,0,0,0,-2,-2,-1,
0,1,1,1,0,1,2,4,
4,4,2,2,0,-1,-1,-2,
-1,0,0,1,2,0,0,2,
3,2,4,2,1,0,0,1,
2,2,3,3,3,1,2,2,
1,1,1,1,1,0,-1,-1,
-2,-2,-1,0,1,1,0,-1,
-1,-2,-2,-2,-3,-3,-2,-3,
-2,-1,-2,-1,-1,-1,-1,-1,
-2,-1,1,2,3,2,1,0,
-1,-3,-3,-2,0,0,-1,0,
1,1,1,1,0,0,-1,0,
1,1,2,2,2,1,1,2,
1,0,0,0,1,1,0,0,
0,-1,-1,0,0,1,1,1,
0,-1,0,1,1,2,1,1,
0,-1,-1,0,1,0,-1,-2,
-2,-2,-1,0,0,-1,-2,-2,
-1,-1,0,0,0,-1,-1,-2,
-1,-3,-4,-4,-3,-1,-1,-1,
-1,-1,0,-1,-2,-2,-3,-2,
-2,-1,0,0,0,0,1,2,
1,0,0,0,0,1,2,2,
4,2,3,2,1,1,1,0,
-1,-2,-2,-1,0,0,0,-1,
0,-2,-1,-1,-2,-2,-1,-1,
1,1,0,0,0,-1,-2,-2,
-2,-1,-2,-3,-2,-2,-2,-2,
-3,-4,-4,-2,-1,1,1,1,
0,-2,-2,-3,-3,-3,-3,-3,
-2,-1,-2,-1,-1,0,-1,-2,
-2,-2,-2,-1,0,0,1,0,
1,-1,0,-1,-1,-1,0,1,
1,1,-1,0,0,0,1,1,
0,0,1,0,0,1,1,1,
1,1,1,0,1,3,2,2,
1,0,1,1,-1,-1,-1,-1,
-1,-2,-1,-2,0,0,0,1,
-1,-1,-3,-3,-2,-1,-1,-1,
-1,-1,-2,0,-1,0,0,0,
1,1,0,1,0,0,0,0,
-1,-2,-1,1,2,1,1,-1,
0,1,3,2,1,-1,-1,1,
1,1,3,2,1,0,1,0,
0,-2,-3,-3,-2,-2,-1,-1,
-1,-2,-1,-1,0,-1,0,0,
1,1,2,2,0,0,1,1,
1,0,-1,0,0,1,1,1,
0,0,1,1,1,0,-1,0,
1,1,2,2,2,1,1,1,
1,0,0,1,0,0,0,0,
-1,-2,-1,0,3,2,2,1,
0,0,0,-1,-2,-1,1,0,
1,0,1,1,1,0,-1,-1,
-1,-1,-1,0,0,2,2,1,
1,1,0,0,0,0,-1,0,
0,-1,0,0,0,0,-1,-1,
0,-1,0,-1,-1,-1,-2,-1,
-1,0,2,2,3,2,2,2,
2,3,2,2,1,1,2,1,
1,0,-1,-1,0,2,3,3,
3,0,0,-1,-1,-1,-2,-1,
-1,-1,-1,-1,-1,0,1,1,
1,1,1,0,1,0,-1,0,
1,1,2,2,2,1,0,1,
1,2,1,2,1,0,0,0,
0,0,0,0,-1,0,0,0,
0,0,2,2,1,0,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,
2,2,1,0,-1,-2,-2,-2,
-1,0,1,1,0,0,-2,-1,
-1,-1,-1,0,0,1,0,0,
-1,-2,-2,-2,-3,-4,-3,-2,
-1,1,1,0,-1,0,0,1,
1,0,-1,-2,-3,-1,0,2,
2,2,1,1,1,2,1,0,
0,-1,-2,-1,0,0,1,0,
1,2,2,2,0,-1,-2,-1,
-1,0,0,0,0,1,0,0,
-2,-1,-2,-2,-3,-1,-1,0,
-1,0,0,1,0,1,-1,0,
-1,0,0,-1,-1,1,0,-1,
-2,-2,-1,0,1,0,-1,1,
-1,0,0,-1,-1,-2,-2,-2,
-1,1,1,1,0,-1,-1,-1,
0,1,0,1,1,1,1,2,
0,0,0,0,0,1,2,2,
1,2,3,2,1,-1,-2,-2,
-1,-1,0,2,2,0,-1,-2,
-2,-3,-2,-2,-2,-1,-1,0,
0,0,0,0,0,0,0,0,
1,0,1,1,1,0,-1,0,
0,2,1,0,-2,-1,-2,-2,
-2,0,1,2,2,0,0,1,
2,1,3,1,0,1,0,1,
0,0,-1,-1,-2,-1,0,1,
-1,-1,-1,0,0,1,0,0,
1,2,0,0,-1,-2,-2,-2,
-1,1,0,0,-1,-1,1,1,
3,1,1,0,1,1,1,0,
1,1,2,2,2,2,2,2,
2,2,1,1,1,2,2,3,
3,2,1,1,1,0,0,0,
0,0,-1,0,-1,-1,-2,-2,
-2,-2,-1,-2,-1,-1,0,1,
1,1,0,1,1,2,2,1,
-1,0,1,2,1,1,1,2,
2,2,1,1,0,0,1,1,
-1,0,-1,-1,-1,-1,-1,1,
0,1,1,1,0,0,1,2,
2,1,2,1,0,1,0,2,
2,2,2,2,1,1,0,0,
0,0,1,0,1,1,2,2,
1,2,1,0,0,0,-1,1,
1,1,1,0,0,1,1,2,
1,-1,-3,-2,-1,1,2,2,
1,-1,-3,-2,-2,-2,0,1,
2,2,2,1,0,1,1,2,
1,2,1,2,2,1,1,1,
0,1,2,2,3,2,2,2,
1,1,0,0,0,2,1,0,
-1,0,-1,-1,-2,-1,-1,-1,
-1,-1,-1,0,0,-1,-1,-3,
-1,-1,0,0,1,0,0,0,
0,0,0,1,2,2,1,0,
-1,-1,-1,-1,0,0,1,1,
0,-1,-1,-4,-4,-3,-2,-1,
0,0,-1,-2,-3,-2,-1,0,
0,1,0,1,1,0,0,-2,
0,-1,-2,-2,-2,-2,0,1,
0,0,-1,-1,0,0,-1,-1,
-1,-2,-2,-3,-3,-1,0,2,
1,1,-1,-1,-2,-1,0,-1,
0,-1,-1,-1,-1,0,0,0,
0,-1,-2,-1,0,0,0,-1,
-1,-2,-2,-1,0,1,2,1,
0,-1,-3,-3,-3,-2,-1,-1,
-2,-2,-1,0,-1,-1,-1,-1,
-2,-1,-1,0,0,-1,-1,-1,
0,1,1,1,1,0,-1,-1,
-1,-1,-1,0,0,-1,-1,0,
0,-1,0,2,2,1,0,0,
-1,0,0,-1,-1,-1,-1,0,
-1,0,1,0,0,0,-1,-1,
1,0,0,0,0,1,2,2,
1,0,-1,-1,-1,0,-1,-1,
-1,-1,-1,-1,0,3,3,2,
0,0,-1,-1,-1,-1,-1,0,
0,-1,-1,-1,-1,-1,-1,-1,
0,0,-1,0,-1,0,-1,0,
0,1,0,-1,0,0,1,1,
0,1,0,-2,-1,-1,-1,-1,
0,1,-1,-2,-2,-2,-2,-1,
-1,0,0,-1,-1,-1,-1,-1,
0,0,-1,-2,-3,-4,-3,-1,
0,1,1,0,0,0,1,0,
0,1,-1,0,0,0,1,0,
1,0,0,0,1,1,1,1,
2,2,2,2,1,2,2,3,
3,2,2,2,1,1,0,0,
0,0,-1,0,0,0,-1,-1,
-1,-1,-2,-2,-1,-3,-3,-2,
-1,0,1,1,1,1,1,0,
-1,0,1,0,-1,-1,-1,-1,
1,1,0,2,0,-1,-1,-1,
-1,-2,-2,-2,-1,-1,0,0,
1,0,1,-1,0,-1,-2,0,
-1,-1,-1,0,0,1,1,0,
-1,-1,0,0,-1,0,-1,0,
1,2,1,2,1,2,3,3,
2,2,1,0,0,0,0,0,
1,1,0,-1,-1,0,0,0,
0,-1,-1,-2,-2,0,0,1,
1,1,1,2,1,0,0,-1,
0,0,0,0,1,1,0,0,
-2,-2,0,0,-1,1,1,2,
1,1,0,-1,-1,-1,-1,-2,
-1,-1,0,1,1,1,1,2,
2,2,1,1,1,1,0,1,
2,1,1,0,1,1,1,1,
2,2,2,1,1,0,-1,0,
1,1,1,1,0,0,0,0,
1,1,1,1,0,-1,1,1,
1,1,0,0,0,-1,-1,-1,
-1,0,0,0,1,0,0,-1,
-1,-1,-2,-1,-1,-1,0,0,
0,0,0,0,-1,0,-1,-1,
0,1,0,1,0,0,-1,-1,
-1,0,0,-1,1,0,0,-1,
-1,-2,0,0,1,1,0,0,
0,0,0,0,-2,-1,-1,-1,
0,0,-1,-1,0,-1,0,-1,
0,-1,-1,-2,-1,-1,-1,0,
1,1,1,1,1,-1,-1,-1,
-2,-1,-1,-1,-1,0,1,1,
0,0,0,-1,-1,0,-1,-2,
0,0,-1,0,0,1,0,0,
1,1,1,0,-1,0,-1,-1,
0,0,0,1,1,3,3,3,
2,1,1,1,0,0,0,0,
-1,-1,0,0,0,0,0,0,
0,0,-1,0,0,-1,0,-1,
0,-1,0,0,-2,-1,-1,};
hR(n):
short g_thetrackingroomR[13800]={0,
0,-1,0,0,0,1,0,0,
0,-1,1,0,0,0,0,0,
0,0,0,0,0,0,-1,0,
0,-1,0,-1,0,0,0,0,
0,0,0,0,0,0,0,-1,
0,0,0,-1,0,0,0,-1,
-1,0,0,0,0,0,0,0,
0,0,0,0,-1,0,0,1,
1,1,0,0,0,1,0,0,
0,0,0,0,0,0,0,1,
-1,0,0,0,0,0,0,0,
0,0,0,0,1,0,-1,0,
0,0,0,0,1,0,0,0,
1,0,0,1,0,0,0,1,
0,-1,0,0,0,0,0,-1,
0,0,0,0,0,0,0,0,
0,0,-1,-1,0,0,0,0,
-1,0,0,1,0,0,-1,-1,
-1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,-1,1,
0,0,0,0,0,0,0,0,
0,0,-1,0,1,0,0,1,
0,0,1,0,-1,0,-1,-1,
0,0,0,0,0,-1,0,0,
0,1,-1,0,-1,0,-1,1,
1,1,-1,-1,0,0,1,-1,
1,1,1,0,0,0,0,0,
0,0,0,0,-1,-1,0,0,
0,0,0,0,0,0,1,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,0,
-1,0,0,0,0,0,0,-1,
0,0,1,0,-1,0,0,0,
1,-1,0,0,0,1,0,0,
0,0,0,0,-1,1,0,0,
0,0,-1,1,-1,1,0,1,
0,1,0,0,0,0,0,0,
0,1,0,0,0,0,0,0,
0,0,-1,0,0,0,-1,0,
0,-1,0,-1,0,-1,0,0,
0,-1,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,
1,0,0,0,1,0,0,0,
-1,0,0,0,0,0,0,0,
1,0,1,0,-1,0,0,0,
0,1,1,0,0,0,1,0,
1,0,-1,0,0,0,0,0,
0,1,0,-1,0,0,0,0,
0,0,-1,0,0,0,0,0,
1,0,0,0,0,0,0,-1,
-1,0,0,0,-1,0,0,1,
0,0,0,1,-1,0,1,0,
0,0,1,0,0,0,0,0,
1,0,0,0,-1,0,0,0,
0,0,1,0,0,0,0,0,
-1,0,0,1,0,0,1,0,
0,0,0,0,0,0,0,0,
-1,-1,0,1,0,0,-1,0,
-1,1,0,0,0,0,1,1,
0,0,1,-1,1,0,0,0,
0,0,0,0,1,0,0,-1,
1,-1,0,0,0,-1,0,0,
1,0,0,0,0,0,0,0,
0,0,0,0,0,-1,0,0,
1,0,0,0,0,0,-1,0,
0,0,1,0,0,0,-1,0,
-1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,-1,0,0,
0,0,1,0,0,1,0,0,
1,1,0,0,0,0,-1,0,
0,0,0,0,0,0,-1,0,
0,0,0,0,-1,0,1,1,
-1,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,1,
0,0,0,0,0,0,1,0,
0,0,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,-1,0,-1,0,
0,0,0,0,0,0,0,-1,
0,1,0,0,0,-1,0,0,
0,0,0,0,0,1,-1,0,
1,-1,0,-1,0,0,0,0,
0,0,0,0,0,0,0,0,
0,-1,-1,-1,0,1,1,0,
-4,-7,-6,-3,2,4,4,2,
-2,-2,-2,3,8,9,6,0,
-2,-6,-15,-30,-40,-46,-39,-30,
-30,-35,-36,-22,-4,5,7,3,
2,9,9,4,4,6,7,12,
16,14,6,2,14,21,12,1,
17,38,34,10,4,34,59,53,
41,44,53,50,44,42,38,26,
9,-4,-9,-7,-4,-6,-8,-15,
-21,-21,-20,-14,-22,-53,-79,-70,
-38,-19,-16,-17,-15,-15,-18,-4,
17,2,-29,-30,-17,-8,-1,8,
11,-3,-13,-13,-1,10,3,-7,
-11,-12,-16,-2,23,19,3,-1,
1,5,-14,-12,8,2,-12,-27,
-32,-42,-39,-54,-39,20,58,-44,
-29,12,44,33,-389,318,978,-83,
-568,-651,-122,731,-16,134,607,207,
199,-46,-181,-281,-310,-234,-241,-142,
24,38,-84,8,57,-91,-14,275,
223,32,-45,-26,-20,-75,-1,73,
134,148,90,206,13,-74,256,211,
235,62,-73,120,33,131,129,-48,
110,174,13,36,127,99,199,263,
132,161,58,-89,-32,-22,27,87,
132,24,-12,83,-10,-89,-97,-61,
-11,-3,-10,-22,34,67,4,-20,
-98,-76,16,3,60,33,69,69,
-12,-15,-94,-106,-26,15,-43,-129,
-171,-148,-74,-59,-97,-102,-65,14,
92,126,130,16,-117,-123,-87,-18,
14,-53,-85,-29,34,50,85,80,
95,131,65,34,98,159,36,-78,
-96,-63,72,120,104,82,70,44,
30,32,61,129,80,-23,-70,-65,
-11,-11,-44,-49,-14,-22,-11,36,
-66,-57,21,-36,-94,-32,112,215,
214,47,-151,-80,167,121,-234,-410,
-234,-260,-442,-351,-48,181,105,-56,
-155,-111,64,116,18,-28,-4,-51,
-85,10,191,351,340,187,89,68,
27,-3,15,87,125,108,138,188,
175,50,-71,-118,-166,-178,-149,-147,
-159,-142,-130,-107,-30,36,59,54,
36,26,-7,-40,-56,-62,-54,-81,
-69,15,59,54,67,83,68,48,
28,30,31,20,12,-56,-123,-110,
-60,1,19,8,47,106,127,61,
-22,-27,25,44,22,3,-10,-30,
-21,35,28,-13,-25,-14,-8,-47,
-74,-94,-96,-88,-60,-16,31,41,
-50,-96,-20,79,39,-16,-24,-67,
-56,-41,6,45,61,58,9,-43,
-34,21,5,-51,-58,-20,-9,-11,
8,10,-9,-27,-19,-12,-30,-35,
-13,5,15,19,8,-7,-17,-17,
-3,12,9,31,73,71,34,25,
16,-14,-30,-23,8,-25,-32,70,
101,1,-98,-21,143,176,83,-15,
-33,-17,-34,-60,-62,-39,-17,-1,
1,-31,-13,72,142,77,-54,-82,
-38,-49,-55,41,84,70,42,47,
72,50,21,-6,-11,-39,-24,24,
30,-3,-11,11,-42,-76,-68,-71,
-65,-54,-11,-1,-39,-21,38,62,
57,60,68,73,61,50,51,53,
53,58,51,30,22,18,25,24,
19,10,14,26,20,14,-3,-6,
-2,13,21,25,85,101,11,-65,
-45,55,118,31,-75,-62,-13,-17,
-42,-76,-78,-11,39,-2,-71,-108,
-104,-76,-54,-45,-48,-26,-9,-39,
-23,-18,-28,-24,-59,-70,-34,25,
40,-6,-30,-19,20,68,77,61,
40,11,-8,-10,7,32,37,33,
37,60,66,20,-39,-47,-34,-18,
-8,-14,-24,-44,-49,-40,-27,-61,
-63,-16,-40,-62,-46,-5,12,-6,
-14,-4,-1,5,66,82,50,19,
21,53,73,84,59,6,-30,-39,
-11,21,6,-38,-60,-43,-15,-32,
-68,-52,-16,-2,-17,-39,-38,-33,
-8,10,-7,-15,-1,8,6,-16,
-36,-15,31,49,36,4,-11,-13,
-33,-11,59,128,162,160,101,1,
27,109,45,-114,-209,-170,-180,-274,
-227,-14,159,182,154,152,141,81,
31,44,69,87,81,35,-10,-22,
-9,6,11,24,30,22,19,6,
-18,-34,-11,32,50,54,21,-6,
-6,4,-2,25,43,-27,-67,-49,
-4,18,16,25,30,17,-50,-64,
-25,-15,-42,-74,-55,-34,-19,7,
15,11,-8,-36,-52,-22,17,27,
21,-23,-59,-77,-72,-57,-49,-35,
-13,-2,-28,-30,3,50,22,-83,
-88,-36,-14,-38,-58,-23,23,23,
-9,-12,-3,-17,-32,-40,-44,-41,
-71,-84,-118,-86,138,162,-43,-162,
-93,7,-58,-40,119,174,79,-51,
-92,-71,-30,12,19,20,39,53,
74,74,56,53,6,-38,-41,-35,
-36,-63,-72,-61,-44,-42,-58,-52,
-3,31,44,69,71,40,7,-2,
-1,17,44,75,79,39,15,17,
24,16,19,43,49,24,-5,-46,
-81,-47,-13,0,-1,-6,4,4,
1,-44,-93,-79,-48,-23,-29,-30,
8,29,16,-17,-23,-26,-47,-61,
-54,-10,30,35,17,-20,-61,-98,
-96,-52,17,51,46,41,24,4,
3,1,-25,-34,-9,-6,-29,-25,
-11,-24,-26,3,27,18,5,37,
68,43,19,43,29,-29,-8,73,
89,29,-22,-33,-36,-38,-29,-23,
-17,-9,-21,-21,0,14,4,-15,
-23,-49,-76,-55,-9,11,-1,-12,
3,20,6,-12,4,23,33,46,
40,8,-29,-39,-30,-47,-54,-30,
-13,-8,-9,-9,-15,-33,-31,-17,
-5,5,1,-2,-5,-10,-10,-7,
2,1,-12,-20,-9,5,0,-11,
-23,-32,-16,2,1,0,14,29,
22,6,7,13,16,34,50,44,
43,47,42,30,23,24,29,35,
27,12,5,11,12,2,-6,-27,
-27,11,9,-29,-53,-29,5,20,
13,8,21,21,11,-7,-15,-8,
-21,-29,-22,-9,8,6,-6,-2,
22,36,30,17,14,27,21,6,
9,23,40,42,21,-4,-3,17,
24,10,-3,-1,5,2,4,30,
50,37,10,1,18,31,25,15,
11,5,-2,-11,-10,25,52,48,
43,44,41,29,13,2,-6,-4,
7,21,27,10,-14,5,36,38,
23,4,0,8,15,16,16,9,
-13,-17,-1,10,9,14,8,-34,
-51,-30,-5,0,-8,-7,-5,1,
-6,-13,-5,5,13,6,-5,8,
20,9,2,22,38,36,25,19,
13,-10,-33,-37,-34,-26,-23,-7,
7,-20,-52,-72,-65,-39,-19,-19,
-31,-15,2,-5,-17,-16,2,6,
-9,-25,-30,-20,-15,-10,-14,-19,
-9,4,13,-4,-17,3,16,-1,
-19,-10,18,27,1,-28,-38,-30,
-5,21,33,19,-5,-8,-15,-30,
-10,1,-36,-68,-54,-31,-57,-85,
-53,5,61,72,44,8,-21,-15,
-10,1,32,36,40,52,58,57,
48,49,49,29,-2,-3,21,-10,
-67,-60,-12,11,6,15,30,19,
-32,-69,-69,-90,-99,-77,-50,-27,
-17,-17,-2,28,34,11,-5,-18,
-30,-15,17,34,24,-14,-25,6,
29,32,37,65,67,47,43,21,
-5,-19,-2,35,62,74,55,9,
-15,-15,-64,-56,33,32,-56,-118,
-78,-22,-3,32,70,79,35,-12,
-24,-9,6,-3,4,42,59,40,
23,35,49,44,38,20,4,2,
-9,-39,-53,-16,16,15,7,6,
3,4,17,-1,-6,14,24,22,
2,8,47,45,-1,-36,-23,3,
17,42,61,39,7,7,11,26,
32,4,-22,-26,-3,24,26,16,
11,10,32,42,24,6,2,2,
-23,-23,11,-35,-61,20,64,74,
71,5,-28,-18,-52,-79,-52,-11,
7,15,11,-20,-17,12,13,2,
-7,-28,-36,-14,7,-8,-21,-21,
-40,-57,-52,-16,17,11,-6,3,
27,17,-11,-17,-15,-9,18,32,
19,6,-4,-15,-24,-26,-32,-60,
-72,-54,-19,-6,-18,0,39,61,
46,22,34,56,38,8,-1,-17,
-30,-4,34,45,12,-41,-63,-50,
-30,-42,-51,-22,36,52,8,-5,
15,23,11,1,-17,-44,-58,-43,
-19,-14,-5,12,-5,-38,-38,-5,
23,22,3,-4,1,-1,6,16,
4,-6,-7,-2,8,27,33,13,
-2,-12,-14,-9,-8,1,2,-5,
-5,15,27,16,-1,-7,10,30,
25,-1,-23,-23,14,33,5,-3,
11,13,4,10,21,15,7,-2,
-12,-13,-5,-7,-23,-17,14,37,
44,22,-7,-7,7,-10,-52,-48,
-28,-37,-46,-36,-20,-12,-3,16,
32,32,17,6,22,35,24,16,
14,14,2,-8,7,26,31,21,
-5,-38,-52,-42,-26,-23,-10,11,
29,20,12,29,4,-16,10,36,
56,49,30,2,-26,-31,-13,-8,
-3,30,51,57,47,15,2,30,
54,31,1,0,5,-16,-37,-41,
-21,-1,-12,-28,-21,16,25,2,
-23,-27,5,6,-9,0,3,-10,
-15,13,29,29,43,57,57,34,
19,18,24,48,57,22,-38,-11,
63,35,-45,-75,6,99,79,-34,
-84,-8,49,40,14,20,42,83,
115,69,-74,-54,142,62,-164,-213,
-36,187,194,69,-46,-113,-134,-101,
-43,7,5,-37,-57,-30,-12,-35,
-4,46,57,57,81,97,50,-5,
5,60,85,67,72,76,7,-28,
-42,-25,93,134,34,-61,-69,-21,
102,180,91,-38,-125,-155,-100,-28,
-44,-67,-28,-20,-63,-54,8,47,
25,-24,3,41,4,-57,-71,-40,
-25,-40,5,115,76,-51,-86,8,
76,14,9,31,2,-60,-121,-106,
-83,-35,48,69,29,-55,-106,-64,
6,56,69,41,-4,-25,-7,-7,
-37,-28,18,21,-38,-51,-22,-52,
-103,-90,-17,32,79,67,-50,-129,
-91,65,197,193,86,-26,-85,-118,
-161,-178,-125,-28,71,48,-33,-54,
-41,-5,30,45,11,29,67,31,
-30,-62,-27,37,72,48,4,-24,
-12,-37,-74,16,125,100,-28,-79,
4,70,23,-76,-131,-128,-70,-8,
16,47,100,120,79,42,57,54,
44,68,82,56,-16,-91,-80,13,
41,-11,-32,-8,24,13,-25,-25,
31,92,18,-152,-191,-61,42,17,
-41,-24,20,7,-6,17,2,-58,
-89,-42,-21,-92,-159,-124,-36,23,
54,75,59,1,-19,29,80,87,
64,37,11,0,13,46,65,53,
33,12,3,13,15,-19,-61,-71,
-66,-48,-15,8,2,-11,-21,-40,
-60,-47,9,65,60,-6,-56,-38,
16,50,25,-11,-11,16,9,-35,
-59,-52,-12,15,-1,-27,-11,37,
18,-47,-54,-3,28,27,16,5,
11,32,24,-33,-55,-15,27,22,
-17,-33,-29,-20,-16,-9,0,1,
-14,-32,-32,-25,-14,6,31,50,
22,-23,-38,-10,27,35,13,-23,
-25,9,37,29,11,40,42,-10,
-38,-37,-6,31,40,63,86,52,
-3,-17,-3,-1,-25,-34,-22,-17,
-15,-8,-1,-14,-43,-35,14,59,
34,-8,17,58,46,18,7,-2,
14,21,-8,-34,-20,13,6,-4,
17,30,33,26,16,24,44,41,
15,19,61,62,13,-6,11,27,
20,5,11,22,19,1,-18,-14,
16,36,8,-14,8,28,44,43,
28,34,32,0,-35,-35,-8,13,
-3,-31,-45,-52,-51,-27,12,15,
-29,-65,-50,-2,5,-20,-3,42,
51,18,-40,-66,-28,22,33,22,
34,54,43,-41,-31,50,24,-8,
-68,-37,59,26,-21,-60,-67,-57,
-52,-26,5,15,-52,-91,-54,-29,
-30,-27,-32,-38,-11,11,6,-25,
-16,22,33,21,12,20,27,30,
22,18,-7,-27,-26,-48,-50,-2,
59,49,-5,-25,-23,-15,-25,-31,
-25,-10,-6,-31,-66,-79,-37,33,
59,30,-20,-41,-17,-17,-50,-60,
-22,11,-33,-89,-81,-35,13,20, -8,-38,-20,15,-5,-26,-28,-33,
-39,-47,-41,-11,22,17,24,44,
12,-12,8,38,30,-4,-22,-41,
-44,10,55,48,16,-2,31,50,
53,53,34,22,10,28,9,-31,
-2,12,-1,-5,29,34,-55,-97,
-65,-25,-4,0,7,3,4,7,
-9,-13,-5,-2,-4,-35,-52,-35,
-20,-12,22,56,37,4,-5,17,
31,4,-10,22,45,18,0,18,
26,18,-7,-25,-3,-4,-31,-32,
3,33,30,37,45,32,17,-3,
-18,-11,1,16,31,27,21,-6,
-31,-19,-11,7,46,31,-22,-63,
-72,-47,-34,-19,-3,-21,-32,-12,
17,29,50,37,-6,-3,36,65,
60,34,-8,-26,2,22,15,-10,
-18,-11,-11,15,48,52,18,-22,
-31,-19,-8,4,23,35,22,19,
37,18,-24,-49,-40,1,9,-16,
-9,-2,-18,-20,-22,-29,-28,-24,
-3,46,100,108,73,15,-52,-78,
-59,-51,-63,-53,-6,40,79,99,
69,18,-2,16,29,23,28,35,
24,6,-11,-7,14,3,-13,3,
6,2,-5,-16,-27,-43,-30,12,
44,50,40,28,6,-25,-24,-1,
-5,-16,-15,15,37,1,-7,30,
49,41,37,65,36,-45,-69,-34,
6,-3,-31,-19,7,14,25,35,
47,41,24,3,-22,-12,8,-3,
-30,-57,-74,-58,-6,28,3,-47,
-41,-8,-12,-44,-53,-37,-15,34,
72,65,39,27,23,27,25,18,
-1,-21,-10,15,38,15,-29,-34,
-15,13,17,1,-18,-11,3,-14,
-40,-47,-13,24,32,21,1,19,
42,13,-9,-7,-10,-31,-7,56,
24,-30,-20,16,21,-18,8,66,
55,-2,-32,-38,-49,-64,-54,6,
60,82,74,35,11,13,8,-18,
-18,6,-23,-96,-120,-69,-37,-26,
-5,23,58,-10,-100,-77,22,121,
121,42,-11,35,43,33,23,33,
64,43,-8,-12,15,20,0,19,
54,29,-7,9,26,38,38,-13,
-54,-61,-48,-19,-8,-29,-21,-3,
-18,14,50,60,30,-3,28,61,
81,68,30,8,-2,-20,-54,-69,
-39,14,20,20,40,11,-28,-27,
28,85,79,13,-34,-21,-35,-72,
-85,-24,59,74,30,-36,-50,-36,
-20,2,6,43,94,77,-15,-117,
-104,-3,60,51,0,-44,-63,-42,
-32,-51,-34,11,20,-11,-36,-42,
-46,-51,-28,5,-10,2,8,0,
-13,-16,-13,-22,-24,-30,-36,-3,
37,39,0,-40,-19,14,22,37,
21,-5,-22,-37,-48,-50,-19,5,
5,-26,-43,-42,10,23,-57,-18,
-10,-57,-7,27,17,-28,-35,-12,
-20,-7,25,36,29,19,36,42,
-23,-51,-22,5,18,30,42,-2,
-27,24,14,-47,-21,22,34,33,
-20,-46,-44,-13,-20,-22,-67,-137,
-3,61,76,-10,63,211,-105,-253,
-192,2,259,164,36,22,-44,-120,
-169,-107,39,93,86,-37,127,103,
-38,-45,30,68,22,62,94,81,
-114,-73,380,187,-299,-376,-91,257,
299,146,7,-9,-39,-103,-111,-60,
-22,-22,-21,-4,66,153,194,108,
-19,-50,-42,-15,1,14,18,0,
0,-36,-88,-89,-36,12,8,-22,
-36,-31,-39,-36,-39,-31,14,33,
-3,-57,-74,-50,1,36,21,-13,
-33,-21,7,15,-3,-28,-51,-42,
-17,11,27,5,-26,-38,-23,-4,
-13,-49,-73,-53,-33,-23,-18,-25,
-28,-2,30,19,-6,22,-35,-44,
-18,-27,-38,-15,9,46,32,-9,
-16,1,12,-36,-62,-49,-39,-11,
31,56,51,30,0,-3,13,21,
16,7,3,-15,-6,0,7,45,
53,42,37,41,52,45,22,3,
5,34,45,21,-5,-14,12,35,
46,31,13,38,52,40,32,37,
32,-2,-27,-50,-61,-12,60,67,
4,-33,-22,-6,-4,-10,-13,0,
1,3,19,-13,-54,-43,-10,-3,
-32,-65,-73,-36,14,29,32,31,
3,-32,-37,-9,7,-16,-15,-6,
-6,17,55,64,42,16,-27,-59,
-61,-44,-23,-7,23,33,4,-18,
-21,-21,-33,-43,-5,34,9,-38,
-45,-3,12,-24,-50,-47,-41,-32,
-37,-48,-32,-10,17,49,37,14,
4,-11,-12,-3,1,-1,3,0,
-4,-13,-12,5,15,30,26,-8,
-25,1,36,48,50,48,30,21,
22,15,26,54,65,56,50,61,
73,59,23,5,13,27,29,28,
29,-6,-39,-36,-24,-27,-18,11,
-3,-25,-24,-2,20,16,19,-31,
2,35,48,32,20,40,58,28,
-8,-18,-19,-17,-24,-6,21,2,
-11,6,37,48,6,-34,-51,-52,
-38,-19,5,5,6,34,42,27,
14,13,22,11,0,-13,-35,-24,
2,11,0,-3,-3,-8,-16,-10,
28,49,44,31,-2,-41,-52,-33,
3,23,10,-23,-37,-30,-15,19,
49,29,-9,-28,-22,-10,-12,-11,
-5,-14,-28,-27,-10,4,-6,-34,
-44,-40,-44,-35,-14,-3,0,3,
6,-6,-20,-19,-19,-16,-14,-24,
-44,-37,-6,2,-9,-7,7,28,
34,10,-5,-3,0,7,25,31,
13,10,37,54,32,21,18,8,
8,-1,6,26,10,-19,3,47,
76,55,10,-16,-39,-38,-27,-30,
-27,-11,-7,-7,7,27,36,7,
-10,-4,6,9,-8,-19,-33,-45,
-32,-9,-9,-37,-35,-15,3,16,
12,-8,-8,-1,-6,-6,-12,-8,
-2,1,-1,-9,7,30,35,7,
-23,-9,22,24,5,-14,-34,-31,
-4,29,61,64,36,10,7,8,
-6,-33,-48,-43,-33,-25,-14,8,
-8,-9,7,16,-8,-32,-39,-41,
-32,-5,1,-13,-9,-6,-27,-34,
-4,26,20,-4,-21,-24,-20,-13,
-1,2,-6,-15,-18,-12,-11,-13,
2,17,7,-10,3,28,35,17,
-7,-29,-32,-5,18,26,39,34,
11,4,4,2,1,5,2,-5,
-3,7,22,28,27,14,-5,-11,
0,16,20,34,37,10,-4,2,
23,30,-5,-30,-28,-12,0,-35,
-61,-32,-6,-16,-32,-28,-13,3,
7,7,11,6,-10,-25,-23,-9,
-3,9,-24,-26,11,39,42,42,
37,22,7,15,32,21,-5,-16,
-5,17,30,28,9,3,19,0,
-28,-17,13,32,18,-5,-17,-14,
-17,-26,-22,-9,16,16,-12,-20,
-11,0,17,25,13,0,-5,-13,
-20,-10,6,16,23,5,5,5,
-9,7,40,51,31,11,2,-15,
-18,31,48,1,-11,-23,-25,20,
53,69,49,3,-49,-70,-30,11,
0,-34,-26,12,20,9,4,1,
-18,-43,-37,-22,-21,-24,-40,-43,
-14,7,5,-5,4,-28,-62,-47,
14,56,44,5,-16,-4,8,8,
5,-5,-9,-6,2,-2,-12,-16,
-7,5,10,27,55,45,4,-34,
-48,-35,-14,8,14,-11,-36,-36,
-30,-34,-18,4,10,4,-5,-4,
6,14,6,6,11,18,19,-5,
-7,17,32,24,16,13,4,-1,
8,12,14,21,8,-15,-22,-19,
-28,-45,-42,-14,9,13,9,-2,
-11,-9,8,12,4,12,10,1,
17,29,31,21,13,14,10,15,
28,31,32,27,13,-1,0,2,
-11,-19,-15,-2,13,7,-4,-9,
-13,-13,-20,-35,-36,-14,6,10,
12,9,0,-19,-34,-31,-22,-27,
-32,-32,-32,-32,-30,-26,-15,-6,
-5,6,25,32,30,22,5,-23,
-34,-20,-13,-11,1,17,16,9,
13,15,17,17,12,-2,-12,2,
22,12,-12,-20,-7,-12,-19,-4,
5,8,11,13,0,-12,-15,-15,
-13,-12,-3,6,7,8,9,2,
1,18,31,10,-24,-27,-6,15,
19,13,10,1,-5,1,16,14,
-4,1,-18,-15,3,7,-4,-10,
3,12,18,20,11,-3,-17,-26,
-29,-23,-17,-21,-32,-28,-4,11,
14,19,23,23,11,2,3,3,
-1,-3,-12,-27,-26,-19,-17,-12,
7,16,5,-7,0,14,4,-8,
-1,18,33,29,33,27,6,2,
8,-1,0,10,5,4,6,11,
8,-11,-24,-22,-15,-12,-16,-8,
6,14,17,12,9,17,19,11,
7,15,33,30,12,-7,-21,-31,
-31,-28,-23,-3,8,5,-9,-22,
-32,-39,-26,-7,3,-15,-7,18,
23,15,9,13,13,9,12,15,
14,10,12,20,17,6,4,16,
27,32,38,34,21,19,14,-5,
-21,-20,-6,0,5,15,24,8,
-16,-18,0,20,22,6,-11,-19,
-21,-25,-18,-17,-23,-17,-4,5,
4,7,14,13,5,-3,-11,-10,
-1,3,-4,-13,-5,6,0,-11,
-8,12,24,21,15,6,-4,-9,
-8,-2,6,13,13,12,11,16,
24,37,40,28,12,5,14,21,
16,12,8,6,-3,-15,-14,3,
-9,4,18,21,18,13,15,17,
24,20,8,2,10,14,-3,-13,
-2,10,10,5,15,11,-12,-19,
0,18,-1,-34,-36,-12,6,12,
4,-7,-10,5,29,37,27,10,
-11,-27,-26,-11,3,5,-2,0,
14,12,-13,-24,-20,-11,0,6,
4,-6,-11,-7,-7,-7,-1,0,
-2,1,6,1,-15,-27,-13,12,
22,26,28,21,7,-13,-18,2,
19,9,-4,-9,-4,-2,-3,-6,
-19,-27,-17,-10,-8,-12,-17,-16,
-6,4,-11,-27,-32,-18,-10,-16,
-20,-23,-27,-18,-5,-1,-4,-6,
-5,-10,-11,-11,-3,6,-1,-9,
-10,-9,7,29,30,15,9,12,
18,19,6,-6,-10,-4,-4,-20,
-26,-11,-1,-5,-8,1,15,17,
3,-10,-15,-2,21,21,7,-4,
0,16,16,8,9,11,6,-9,
-26,-25,-11,-1,-6,2,18,12,
-9,-22,-9,8,3,-2,16,36,
32,9,-5,-6,7,20,24,18,
5,2,3,2,6,12,18,14,
5,-6,-14,-11,2,-1,-2,-3,
-7,-11,-7,6,14,9,13,15,
3,-8,-5,1,2,2,2,-2,
-14,-17,1,18,18,-4,-27,-23,
-7,-3,-14,-28,-30,-19,0,12,
10,-3,-11,-17,-20,-10,3,4,
-6,-10,-3,3,-3,-11,-6,10,
18,17,13,7,4,3,3,-2,
-3,3,3,-12,-20,-13,-12,-22,
-26,-18,-8,2,6,7,-2,-12,
-18,-13,1,2,-9,-16,-13,-9,
-12,-9,0,1,0,3,-2,-7,
-2,6,14,17,12,-3,7,15,
21,23,17,0,-12,-8,-2,-2,
1,1,-8,-3,9,18,28,32,
21,2,-7,1,-2,-19,-21,-2,
16,21,20,26,23,7,1,1,
0,4,7,-10,-30,-31,-18,-14,
-19,-10,-3,-11,-14,-8,-8,-6,
4,23,27,6,-12,-17,-18,-6,
5,5,6,16,18,17,13,3,
-12,-20,-17,-13,-4,-5,-26,-38,
-21,5,16,16,14,3,-12,-19,
-19,-13,-2,3,-1,-11,-16,-18,
-11,-7,-14,-12,-2,1,-8,4,
7,0,-3,-9,-23,-24,-14,-10,
-7,-7,-7,-2,2,-3,-13,-14,
-11,-9,-12,-21,-26,-10,16,24,
13,8,14,24,22,14,17,23,
10,-10,-18,-15,-15,-20,-22,-16,
-6,10,19,3,-19,-25,-7,12,
1,-5,11,30,37,27,19,17,
14,9,7,-6,-17,-10,-2,-14,
-22,-13,-1,10,15,17,15,3,
-13,-24,-19,6,32,34,17,-11,
-31,-24,-7,-7,-14,-7,8,13,
5,-4,-8,-8,-2,8,-8,-1,
4,-10,-24,-17,-3,-2,-8,-7,
0,6,10,13,2,-15,-17,1,
10,-4,-13,-12,-4,5,21,24,
5,-9,-5,10,18,8,-16,-27,
-13,5,2,-9,-8,4,11,-4,
-17,-7,10,24,20,6,-7,-16,
-18,-8,1,0,-15,-26,-27,-26,
-23,-26,-25,-11,-2,-2,-1,2,
-6,-14,-10,2,0,-12,-12,-2,
14,18,8,-4,-13,-20,-20,-16,
-19,-24,-24,-12,0,-1,-3,2,
4,-5,-13,-9,5,-3,-8,-5,
-6,-10,-14,-11,-6,-4,-3,4,
4,-5,-9,-8,-7,-8,-10,-6,
-4,-3,3,8,14,16,1,-11,
-10,-10,-8,-5,0,1,-3,-2,
-3,-1,12,25,14,-5,-13,-8,
-1,4,8,0,-10,-10,-4,3,
7,10,9,2,-1,-1,3,8,
10,0,-11,-7,8,12,-1,-10,
-10,-6,6,10,1,-4,2,8,
6,-4,-18,-14,5,25,31,12,
-13,-21,-6,10,11,4,4,4,
-6,-14,-16,-14,-6,4,-4,-14,
-14,-8,-4,5,6,-7,-10,-3,
7,14,14,7,-12,-13,0,4,
7,10,10,6,6,10,4,-2,
-6,-6,-4,-9,-11,0,11,16,
25,41,39,19,16,34,41,27,
5,-8,-2,4,8,15,22,21,
2,-14,-11,-4,-5,-21,-30,-23,
-16,-18,-24,-21,2,21,10,-3,
9,23,14,-4,-13,3,25,16,
-1,-1,10,10,0,0,3,-4,
-10,1,12,-1,-17,-12,0,-7,
-14,-7,4,7,-4,-14,-16,-5,
13,19,12,13,25,24,10,-9,
-16,-8,10,15,-2,-13,-14,-2,
11,13,-1,-20,-23,-12,3,9,
-8,-32,-31,-9,13,27,30,27,
21,16,17,17,5,-8,-9,3,
1,-8,-2,4,3,2,1,-5,
-8,-6,-2,3,1,-3,-3,6,
25,33,18,-6,-26,-35,-27,-5,
14,19,18,22,19,12,12,18,
24,28,27,24,16,1,-13,-12,
-5,7,21,18,3,5,12,7,
-11,8,10,7,3,3,-8,-25,
-19,-9,-12,-19,-14,-1,-6,-15,
-2,12,10,11,23,23,13,6,
1,-1,4,1,-14,-18,-1,8,
6,5,9,16,13,1,2,16,
20,0,-12,-7,-10,-11,-1,20,
30,13,-15,-30,-15,18,17,-3,
-10,-11,-18,-23,-14,6,12,2,
-7,1,17,22,12,-1,-8,-11,
-5,11,29,34,17,-2,-8,4,
16,8,-3,3,8,0,-3,3,
16,24,15,9,8,5,6,12,
20,27,17,-1,0,8,22,36,
38,32,16,-2,-19,-24,-8,21,
38,31,15,6,11,23,9,-15,
-9,9,21,31,35,28,21,12,
-4,-9,-7,-4,-4,2,1,-9,
-6,11,19,10,-4,-15,-11,-6,
-5,0,1,-1,-6,-14,-21,-17,
-13,-6,12,20,14,3,-5,-12,
-18,-24,-22,-15,-11,-14,-13,-5,
2,6,7,7,-3,-17,-22,-21,
-16,-5,6,8,6,6,11,7,
-15,-30,-27,-13,-3,-5,-11,-15,
-8,8,-23,-28,-15,-10,-17,-23,
-16,1,2,-7,-13,-9,-2,4,
11,6,-4,-9,-7,-5,2,10,
5,-7,-11,-3,6,10,11,6,
2,16,33,36,29,23,22,13,
7,12,11,-3,-18,-26,-27,-26,
-14,2,8,13,10,-1,-6,-5,
2,11,9,-9,-18,-9,4,3,
-17,-28,-20,-14,3,29,35,17,
-7,-21,-16,-1,1,-3,-11,-21,
-17,-5,5,8,-1,-15,-25,-19,
4,19,10,-3,-3,16,27,7,
-17,-23,-18,-7,3,-23,-33,-21,
-7,8,11,2,-8,-4,-2,-11,
-17,-13,-6,-3,0,4,8,7,
0,-5,-1,7,15,16,8,-3,
-8,-3,5,9,4,3,10,22,
19,2,-6,4,18,19,13,0,
-8,-9,-14,-7,11,18,13,-2,
-21,-30,-21,1,9,5,-1,-5,
-11,-14,-4,4,3,-3,-8,-9,
-8,-7,-5,1,1,-9,-13,-3,
11,16,7,-9,-26,-34,-23,3,
25,20,1,-7,-1,9,7,-5,
-14,-16,-8,4,3,0,12,-8,
-15,-5,2,3,6,-7,-24,-20,
5,21,18,17,24,20,-6,-28,
-14,10,23,22,18,11,-3,-4,
4,3,-3,4,7,-3,-12,-18,
-19,-5,16,24,15,4,-2,2,
6,2,-4,-7,-7,3,8,0,
-18,-24,-10,5,15,15,2,-10,
-3,8,8,3,-7,-9,-10,-20,
-23,-15,-1,14,21,13,-2,-13,
-24,-24,-14,1,21,29,16,-2,
-9,5,26,32,25,17,7,-1,
-11,-8,4,22,45,7,-42,-24,
7,-26,-22,-5,11,6,-15,-19,
-11,-21,-44,-14,41,27,-16,-19,
3,21,7,-10,-1,5,-8,-34,
-42,-14,14,10,-21,-34,-13,9,
10,-3,-8,0,13,13,8,4,
-9,-25,-31,-22,-2,14,16,4,
-17,-31,-21,-2,-1,-19,-29,-29,
-25,-12,-1,-7,-16,-12,-1,4,
-7,-18,-16,-6,2,13,17,5,
-9,-6,7,12,-1,-17,-15,0,
15,21,11,-3,-17,-25,-23,-10,
1,2,1,4,2,-10,-22,-19,
-5,13,-3,-8,-1,6,8,7,
-10,-29,-28,-8,6,7,5,6,
8,1,-5,-4,2,2,6,16,
16,4,-8,-16,-12,-2,6,7,
4,3,0,-1,2,0,-8,-7,
2,13,19,17,9,3,5,11,
5,-3,-4,0,9,13,4,1,
5,5,1,1,4,7,2,-4,
0,10,9,-1,-12,-12,-6,-1,
-3,-12,-21,-19,-10,-2,0,5,
11,12,5,-2,-2,3,4,-5,
-12,-7,5,13,12,-2,-16,-11,
2,2,0,4,1,-1,3,0,
0,9,20,17,7,-1,-3,-3,
-3,1,5,3,2,8,16,16,
1,-13,-15,-11,-7,-2,-2,-1,
0,-1,-10,-17,-13,-6,-5,-8,
-5,4,10,6,-3,-7,-3,0,
3,8,13,8,-7,-26,-30,-17,
-1,0,-8,-8,0,5,11,13,
12,-1,-10,-10,-1,4,2,-1,
-3,-3,-1,5,7,4,-6,-9,
-5,0,4,11,19,11,-3,-8,
-5,4,7,4,-3,-8,-12,-15,
-12,-5,1,-4,-18,-27,-20,-4,
1,-4,1,1,-5,0,2,0,
1,7,11,13,8,-6,-14,-4,
9,20,22,13,0,-13,-21,-22,
-15,-7,-2,7,10,6,6,12,
19,15,5,-2,-7,-8,-3,-1,
-3,-5,-7,-3,2,3,-1,-4,
-1,7,16,19,9,-4,-9,-7,
-2,-1,4,12,11,0,-8,-6,
3,3,0,-4,-11,-20,-25,-17,
-10,-18,-24,-16,-3,-6,-25,-23,
-9,-11,-20,-17,0,13,10,0,
-9,-8,-1,2,-2,-2,6,13,
6,-7,1,9,13,5,-12,-23,
-21,-7,3,5,5,7,0,-9,
-7,2,10,7,5,11,12,3,
-7,-8,-1,4,0,-1,-1,3,
12,14,6,-5,-10,-17,-17,-8,
5,13,12,7,4,1,-4,-2,
-3,-11,-19,-18,-18,-15,-10,-2,
7,18,20,8,-10,-17,-9,5,
17,23,21,12,-2,-7,-5,-5,
-1,7,14,19,15,7,-3,-15,
-18,-10,-2,-3,-7,-4,2,5,
5,1,-4,-7,-2,4,-3,-12,
-13,-7,-1,2,-4,-14,-12,-3,
-4,-9,-7,-4,-3,-14,-20,-9,
4,2,-9,-19,-22,-18,-9,2,
5,3,4,8,15,17,13,3,
1,4,10,16,15,2,-13,-15,
-4,6,6,3,4,8,3,-4,
-3,6,16,20,16,12,15,15,
12,8,6,6,8,16,20,12,
5,10,20,26,23,13,2,-3,
-2,1,2,-2,-9,-10,-7,-12,
-14,-9,-3,3,7,9,10,5,
3,4,2,1,2,8,10,8,
2,-4,-11,-8,4,0,-2,-5,
-11,-16,-12,0,16,25,31,29,
19,7,1,0,-3,-1,5,9,
4,-8,-15,-16,-11,-7,-2,-2,
-3,-1,0,-3,-5,-3,0,4,
11,17,19,17,12,2,-4,2,
10,7,-5,-14,-4,17,28,21,
10,5,4,-3,-13,-11,3,10,
7,-5,-18,-18,-3,11,14,6,
-3,-5,0,5,6,9,8,3,
-2,-7,-12,-8,-1,1,-3,-7,
-11,-7,2,7,7,1,-9,-17,
-19,-14,-7,3,-5,-6,-1,6,
8,3,-5,-8,-8,-14,-18,-13,
-5,-3,-6,2,9,2,-7,-9,
-10,-12,-3,6,9,9,7,2,
-3,-6,0,11,13,2,-4,-1,
1,-8,-19,-17,-5,8,12,5,
-1,-3,-4,-9,-7,9,21,23,
15,3,-6,-6,0,6,12,13,
-1,-15,-8,7,7,-5,-9,5,
24,27,10,-7,-2,13,20,13,
11,10,-1,-15,-20,-15,-5,-1,
-4,-5,-3,-3,-10,-10,-4,3,
2,-4,-13,-17,-20,-16,-4,2,
-9,-4,9,6,-9,-17,-11,-3,
0,0,0,-2,-16,-24,-15,-4,
10,23,24,10,-2,-3,7,11,
5,0,0,1,7,18,21,11,
2,-3,-1,-1,-3,-4,2,4,
1,1,1,-2,-7,-6,1,5,
-2,-13,-20,-14,-4,-3,-6,-4,
5,17,23,20,14,11,9,4,
0,-5,-7,-7,-6,-5,-3,-3,
-7,-4,13,20,8,-5,1,8,
7,3,1,-7,-12,-8,-3,3,
7,7,3,1,-1,-7,-12,-13,
-4,12,-8,-19,-4,19,28,18,
5,-5,-12,-10,4,17,13,-1,
-5,-2,9,22,25,13,0,-1,
6,7,5,8,0,-9,-7,1,
5,1,-11,-16,-2,13,12,-5,
-22,-26,-22,-22,-21,-7,16,24,
21,21,22,12,-4,-10,-3,15,
20,12,1,-7,-11,-9,1,10,
12,18,20,13,-6,-24,-29,-18,
-4,5,8,6,-6,-18,-18,-2,
7,-5,-32,-42,-24,-7,-8,-12,
-7,3,12,16,15,12,5,-6,
-6,11,19,6,-20,8,27,20,
-3,-25,-30,-12,6,7,-4,-5,
8,23,13,-19,-31,-9,17,21,
6,-8,-9,-10,-17,-17,-6,6,
11,10,11,17,29,35,27,17,
7,-2,-6,-2,7,9,10,14,
15,9,-1,-5,-3,2,3,1,
-5,-16,-18,-8,7,17,15,8,
4,6,14,21,15,1,-10,-9,
8,23,16,-3,-11,-11,-13,-14,
-12,-7,-1,3,-3,-11,-11,-5,
-3,-6,-8,-15,-22,-27,-23,-11,
0,-1,-7,-7,-8,-3,2,-7,
-19,-20,-14,-8,1,7,5,3,
6,13,15,11,4,-2,-7,-5,
0,1,-6,-13,-15,-7,5,12,
12,6,-4,-9,-8,-7,-6,-4,
2,11,8,-9,-19,-14,-7,-7,
-12,-9,-4,-9,-20,-26,-26,-17,
-10,-5,-2,0,-1,1,5,10,
12,11,7,6,4,0,-4,-7,
-11,-8,-5,-5,-8,-7,-5,-3,
-1,-2,-5,-5,3,11,14,13,
13,10,0,-6,2,-4,4,11,
9,3,2,3,4,5,2,-6,
-14,-20,-21,-16,-5,4,8,2,
-3,-1,5,4,1,4,8,6,
0,-3,-5,2,10,16,16,11,
10,4,-3,2,17,21,6,-14,
-18,-10,2,4,3,0,-7,-7,
1,9,6,-2,-9,-6,2,4,
1,-1,-4,-13,-23,-23,-13,-3,
-3,-12,-10,4,12,10,2,-4,
-9,-8,-2,3,5,6,11,9,
1,-8,-10,-8,-4,-4,-7,-7,
-3,-7,-22,-34,-32,-16,-1,9,
-2,-8,-2,4,2,-4,-8,-3,
1,0,-1,1,2,-4,-6,-4,
-3,-6,-7,1,3,-1,-2,-1,
0,-2,-3,3,6,9,11,4,
-7,-7,2,7,4,-4,-12,-17,
-12,-3,2,1,4,8,7,3,
0,2,0,-6,-5,3,13,13,
7,0,-4,-7,-6,-1,4,4,
-1,-9,-13,-11,-2,5,4,2,
3,3,0,-1,-3,-4,-5,-8,
-7,2,9,12,7,-2,-3,1,
3,1,0,0,2,0,-2,0,
-1,-4,-3,3,-1,-4,-5,-1,
4,5,-2,-9,-12,-10,-5,-2,
0,2,2,-4,-11,-12,-8,-7,
-4,-4,-6,-2,9,16,11,2,
-9,-11,-1,8,1,-12,-13,-3,
4,11,15,11,5,-2,-5,-4,
1,7,7,1,-3,-5,-7,-3,
6,6,-4,-11,-10,-4,-1,-1,
-2,-4,-3,0,7,11,15,15,
13,9,3,-1,-3,-1,-1,2,
4,3,4,3,4,4,0,-3,
0,8,9,-3,-13,-11,-4,1,
-3,-9,-3,2,-3,-4,-4,-1,
8,17,17,10,6,4,1,3,
0,-5,-3,4,6,4,-3,-8,
-5,3,9,7,2,-1,1,4,
4,5,4,1,1,5,4,-1,
-4,-5,-4,2,7,8,7,10,
10,5,0,0,4,7,4,-3,
-8,-10,-12,-10,-4,2,3,2,
1,1,-3,-9,-12,-8,-1,3,
6,5,-2,-10,-13,-6,1,5,
0,-7,-5,-1,4,3,4,3,
1,0,-1,-6,-10,-8,4,14,
17,15,8,1,0,1,-4,-9,
-8,0,7,7,3,2,4,2,
-4,-7,-4,-2,-3,2,0,-7,
-11,-7,3,7,6,7,10,8,
2,-2,-3,-1,0,2,8,13,
12,4,1,3,10,14,8,0,
-7,-13,-14,-7,0,3,-1,-6,
-4,3,6,6,7,2,-8,-15,
-11,-2,1,-2,-4,-4,-5,-6,
-7,-6,-3,1,5,2,0,1,
-1,-5,-5,-2,2,6,9,7,
0,-6,-8,-9,-8,-5,-5,-6,
-7,-3,0,3,4,2,0,0,
1,-2,-2,5,9,5,-1,-1,
1,-3,-9,-8,1,6,1,-8,
-8,-3,0,-6,-10,-2,6,5,
-2,-8,-7,-4,-4,-2,1,7,
10,10,8,5,1,-5,-14,-17,
-10,1,7,6,3,1,0,2,
4,4,5,3,4,4,6,12,
21,24,23,18,6,-7,-12,-10,
-4,0,0,-2,-5,-2,6,11,
6,-4,-4,5,8,1,-9,-9,
-5,-6,-6,-2,-2,-3,-5,-2,
1,-1,-8,-11,-5,2,4,2,
0,4,6,7,5,1,-4,-6,
-1,7,9,7,-1,-6,-4,5,
17,18,12,4,2,1,1,-4,
-9,-14,-17,-16,-14,-13,-8,-2,
2,1,0,2,5,2,-7,-12,
-6,1,2,-5,-11,-9,-2,4,
3,-6,-16,-17,-9,0,-1,-5,
2,12,13,6,1,-4,-9,-8,
-1,3,1,-6,-10,-8,-1,7,
10,2,-7,-9,-1,10,15,14,
10,6,3,-1,-3,-2,0,-3,
-4,-4,-4,2,7,6,4,4,
4,-1,5,7,4,-1,-2,-3,
-3,-4,-8,-9,-3,4,1,-5,
-6,-5,-4,-5,-3,1,1,3,
8,12,11,1,-7,-8,-6,1,
4,7,6,2,0,0,-4,-7,
-4,3,6,4,1,-1,0,1,
2,2,2,1,1,0,1,-2,
-4,-3,2,7,11,13,9,6,
6,8,8,7,3,2,2,1,
-1,-2,-3,-4,-2,-2,-3,-7,
-8,-6,-2,3,6,4,2,3,
6,5,5,7,7,4,1,0,
4,-2,-6,-9,-14,-14,-10,-4,
0,-1,-1,-4,-3,-1,0,-6,
-13,-17,-17,-12,-8,-6,-6,0,
3,5,4,6,8,8,7,2,
-2,-1,2,3,2,2,1,2,
2,-2,-6,-5,0,6,11,13,
8,1,-3,-2,-2,-1,-1,-2,
0,4,10,9,6,4,3,1,
-3,-2,0,-1,-2,2,8,9,
7,7,8,8,8,8,8,3,
2,8,14,15,9,6,6,10,
10,3,-3,-1,6,9,3,-2,
-3,-2,2,-1,-1,-1,-1,-1,
-1,-1,0,2,0,-3,-6,-7,
-6,-5,-5,-4,-2,0,1,6,
10,11,9,6,3,0,-5,-3,
2,2,-1,-6,-5,-3,1,1,
-1,-2,-1,2,4,4,3,0,
0,1,1,3,3,0,-2,-3,
-4,-4,-4,-3,2,8,12,11,
7,3,-2,-5,-3,1,6,8,
5,4,4,4,-1,-5,-5,-2,
-3,-3,0,1,-2,-2,1,7,
5,-1,-3,-4,-5,-6,-6,-4,
1,5,2,-3,1,2,2,-4,
-9,-12,-9,-2,6,8,3,-5,
-7,-5,-5,-4,-2,0,-1,-6,
-10,-12,-12,-6,1,3,0,-5,
-4,0,4,6,9,6,0,0,
4,2,-5,-9,-5,3,10,10,
4,-1,1,4,6,2,-5,-11,
-12,-4,8,16,12,4,-1,-1,
2,6,5,-2,-6,-6,-1,3,
5,2,0,-1,1,1,1,4,
5,4,2,3,6,8,6,0,
-2,-3,-2,-4,-3,-3,-4,-8,
-10,-7,-5,-5,-5,-2,3,-1,
-2,-2,-1,0,-4,-11,-15,-8,
1,4,2,-2,-5,-7,-6,-4,
-2,2,0,-2,-3,-3,-4,-6,
-7,-8,-5,-5,-6,-7,-4,3,
6,8,10,6,5,1,-1,-6,
-11,-10,-3,3,3,1,3,8,
10,7,1,-4,-3,1,5,3,
-2,-7,-9,-6,-2,-1,-5,-6,
-3,2,0,-4,-4,1,6,7,
6,3,0,-5,-8,-9,-6,-1,
0,1,3,3,-1,-6,-9,-10,
-8,-7,-6,-3,-2,-1,2,2,
-1,0,2,3,3,-2,-4,-5,
-3,0,-1,-4,-6,-7,-5,1,
2,1,0,0,1,3,0,-6,
-7,-6,-2,1,0,-2,-1,3,
3,-1,-2,3,7,3,-6,-12,
-12,-4,3,2,-2,0,5,9,
6,4,7,10,7,1,-4,-4,
0,4,3,-2,-5,-8,-7,-6,
-4,-1,-1,-3,-7,-9,-10,-6,
-3,0,1,2,0,-4,-3,3,
11,15,13,8,3,1,1,2,
5,4,0,-4,-2,2,-1,0,
-2,-2,2,4,2,-1,-3,-1,
1,-2,-5,-5,-3,1,5,5,
3,-1,-7,-12,-14,-12,-6,-1,
5,6,9,12,13,9,2,0,
3,9,13,7,2,1,6,10,
8,4,-1,-6,-8,-5,-1,1,
1,1,-2,-7,-6,-1,1,-5,
-6,-2,3,7,5,2,-2,-4,
-5,-3,3,9,12,12,12,9,
4,0,-1,1,-1,-4,-1,6,
8,4,-1,0,7,8,0,-4,
-3,-3,-6,-5,-4,-2,0,4,
5,2,0,3,4,4,2,1,
0,-2,-2,-1,2,3,4,5,
7,6,3,0,-2,-4,-8,-6,
-2,-1,-1,-2,-1,-3,-5,-7,
-4,0,2,2,3,6,6,4,
3,6,6,0,-4,-4,-2,-2,
-2,0,0,-2,-3,-1,2,-1,
-4,-9,-9,-8,-4,-2,-4,-8,
-10,-9,-9,-8,-7,-5,-1,-4,
-7,-7,-3,3,3,3,5,9,
7,1,-1,0,3,3,-2,-4,
1,7,7,2,-2,-3,-2,-3,
-1,0,2,1,0,4,5,3,
4,4,4,4,5,5,5,5,
5,5,4,2,1,0,-2,-1,
-1,-3,-5,-7,-8,-8,-7,-7,
-9,-9,-7,-3,-3,-2,0,2,
1,-1,-3,-5,-5,-3,2,4,
3,0,-5,-7,-5,-2,0,0,
0,1,3,4,2,-1,-4,0,
3,3,2,0,-1,0,-1,-1,
-3,-6,-6,-5,0,2,-1,-4,
-7,-5,-3,-3,-2,-2,-4,-4,
0,5,6,5,1,0,2,4,
2,-4,-4,0,2,0,-2,1,
3,5,2,-3,-7,-8,-6,-3,
-4,-5,-5,-2,2,4,7,6,
3,1,2,2,-1,-2,-2,-1,
-3,-4,-5,-6,-10,-12,-10,-6,
-1,0,2,3,3,2,3,2,
2,2,1,-2,-7,-11,-10,-4,
1,1,0,2,6,6,4,4,
4,3,3,2,2,3,2,2,
2,1,0,0,4,9,13,13,
10,6,2,-2,-2,-1,1,0,
-3,-5,-6,-4,-3,-5,-3,5,
11,10,6,2,-2,-2,2,-1,
-4,-5,-6,-6,-4,-2,0,0,
-1,-2,0,3,4,2,0,1,
2,0,-3,-3,3,5,5,5,
5,5,2,2,1,3,5,7,
6,3,0,-2,0,4,6,4,
3,2,2,5,6,3,1,2,
3,2,-1,-3,-1,1,3,3,
4,9,12,9,6,4,0,-3,
-3,-2,-2,-4,-5,-2,0,1,
0,-1,1,4,7,7,4,2,
3,1,3,3,2,-1,-4,-2,
1,3,3,0,0,1,-1,-2,
-1,-1,1,3,4,1,-4,-3,
-2,-1,-3,-3,-3,-3,-3,0,
3,3,3,3,4,4,4,6,
7,4,3,2,0,-3,-3,-1,
0,0,2,3,2,0,0,-1,
-1,-6,-10,-7,-1,3,4,3,
3,1,0,-1,-1,-2,-1,-1,
-2,-2,-2,2,6,7,3,-3,
-4,-4,-3,-4,-2,0,2,-1,
-6,-7,-7,-5,-3,0,0,2,
0,-3,-3,-2,-1,1,3,4,
3,0,-2,1,0,-3,-5,-4,
0,1,-1,-4,-8,-10,-8,-2,
2,5,3,1,1,-1,-3,-4,
-6,-5,-5,-5,-3,-2,-3,-4,
-3,3,3,2,-2,-6,-9,-6,
-3,0,2,4,5,4,4,4,
6,9,7,4,2,-1,-1,-2,
-4,-3,-3,-2,0,2,2,1,
-2,-5,-2,2,3,1,-1,-1,
-3,-4,-5,-2,3,7,7,6,
4,2,-3,-6,-4,-2,0,2,
2,-1,-6,-9,-7,-5,-1,2,
3,3,0,-1,2,3,3,4,
5,2,-1,-3,0,3,6,4,
0,1,3,4,1,-2,-3,-3,
0,0,-1,1,4,5,5,5,
5,5,2,2,1,0,0,3,
6,7,5,3,1,2,5,7,
7,7,5,3,2,3,2,1,
0,2,3,7,9,9,8,6,
5,6,4,0,-2,-1,1,4,
4,4,5,6,5,3,4,5,
6,1,-2,-5,-3,1,-1,-2,
-1,-1,-2,-2,-1,1,2,0,
0,0,-1,-4,-6,-4,1,6,
4,1,-3,-4,-2,-1,-1,-1,
-3,-3,-1,0,-1,-2,-2,0,
3,2,-2,-5,-3,-3,-3,-4,
-5,-4,-1,2,3,4,3,2,
3,3,3,5,5,6,5,4,
3,4,6,7,7,7,4,1,
-1,0,3,5,5,3,-1,-3,
-2,-1,0,1,2,1,0,1,
2,3,2,0,-1,-1,1,1,
-2,-4,-6,-2,0,0,-1,-1,
-1,1,0,-1,-2,-3,-4,-5,
-4,-5,-3,-1,-1,0,0,3,
4,4,2,2,1,1,2,3,
4,3,4,3,1,3,3,2,
1,1,0,-2,-3,-3,-1,1,
1,0,0,-3,-5,-6,-6,-5,
-3,1,3,7,9,9,6,1,
0,0,-1,-3,-1,2,4,3,
1,-3,-2,-2,-2,-4,-6,-6,
-4,-4,-2,1,4,4,1,1,
1,-3,-6,-7,-7,-5,-6,-7,
-8,-7,-4,-2,-2,-4,-2,-4,
-5,-5,-2,2,-3,-7,-6,-1,
3,3,2,3,1,-1,-2,-1,
-3,-6,-6,-6,-2,1,2,2,
1,0,-4,-6,-5,-4,-4,-2,
1,2,2,-1,-1,-2,1,4,
4,-1,-5,-7,-5,0,2,0,
-2,-3,-3,-4,-4,-5,-6,-5,
-5,-4,-3,-4,-3,-1,0,-2,
-4,-6,-6,-3,-2,0,-1,-1,
0,1,0,-2,-2,-2,-3,-2,
-1,4,8,8,6,1,-2,-3,
-4,-2,-1,0,2,2,1,0,
2,3,2,0,-1,-1,0,-3,
-5,-5,-1,0,-1,-4,-5,-2,
2,5,3,0,-1,-1,0,-1,
0,-3,-3,-4,-2,1,2,3,
2,2,2,1,2,2,2,1,
0,0,-3,-5,-7,-8,-6,-3,
-2,1,1,1,3,2,-1,-5,
-7,-6,-5,-3,-1,2,2,-1,
-2,2,5,7,3,1,-1,2,
5,4,0,-3,-5,-1,0,-1,
-3,-3,0,3,4,3,0,-2,
-4,-4,-4,-5,-4,-6,-6,-4,
-1,-1,-2,-1,-1,-1,1,3,
1,-3,-6,-7,-5,-4,-3,-2,
-2,-3,-3,-2,0,3,4,6,
7,7,7,4,1,-2,-1,0,
-1,0,0,0,1,2,2,3,
3,2,3,3,2,1,-1,-2,
-2,-2,0,1,4,1,0,-2,
0,1,2,2,2,1,-2,-3,
-1,1,3,3,1,1,-1,-2,
-3,-3,-2,0,1,0,1,1,
1,1,1,-1,-4,-5,-1,2,
2,1,1,2,4,0,-3,-6,
-4,-1,2,3,3,1,0,0,
0,0,-1,-1,1,0,-3,-5,
-7,-6,-5,-4,-5,-7,-7,-4,
-3,-3,-4,-4,-5,-3,-2,0,
2,3,2,2,1,0,-1,0,
2,5,2,-1,-5,-5,-2,1,
2,0,-1,-2,0,1,4,4,
4,1,-4,-5,-5,-8,-8,-7,
-5,-1,0,0,0,0,0,-1,
1,4,5,3,0,-1,0,3,
4,4,2,-1,-2,-2,0,1,
0,-2,-2,0,3,4,5,3,
-1,-2,-1,2,4,3,2,-1,
1,0,0,1,3,2,0,-1,
-1,2,3,3,1,1,2,2,
0,-1,1,3,5,2,0,-1,
0,1,2,2,3,3,1,0,
1,2,2,-2,-1,-2,0,0,
0,0,-2,-5,-4,1,4,4,
3,0,0,1,4,4,3,0,
-1,-2,-1,-3,-7,-7,-6,-3,
-2,-1,-2,-3,-5,-5,-4,-4,
-4,-1,2,3,0,-2,-5,-6,
-5,-2,-1,-1,-3,-2,0,0,
0,-2,-4,-6,-6,-6,-3,-1,
1,0,-3,-2,-2,1,1,-1,
-1,-2,-3,-4,-3,-2,0,0,
-2,-2,-2,-1,-3,-5,-6,-4,
-2,-1,-2,-3,-4,-1,0,0,
1,2,4,4,2,2,2,0,
-2,-2,2,5,4,2,1,3,
3,2,0,-2,-4,-5,-6,-5,
-3,0,2,1,-1,-1,-1,1,
3,3,5,5,6,7,7,6,
5,5,5,4,4,2,2,0,
0,0,1,2,2,1,1,1,
2,4,5,3,1,0,0,1,
-2,-4,-6,-4,-3,0,0,1,
0,0,-1,-3,-3,-2,0,-1,
-4,-4,-2,-1,-2,-6,-7,-4,
-1,1,1,-1,-4,-7,-6,-4,
1,6,6,5,4,1,0,0,
2,4,5,5,3,1,0,2,
3,4,3,2,1,1,1,1,
2,1,0,1,3,4,2,-1,
-3,-2,-2,0,0,0,1,1,
0,1,3,1,1,-1,-1,0,
1,1,0,-4,-4,-4,-2,-1,
-1,0,1,2,1,1,1,0,
0,0,2,2,1,1,2,4,
4,4,2,1,0,1,1,0,
1,0,-1,-3,-5,-4,-1,1,
2,2,0,-2,-1,2,5,3,
2,-1,-1,-1,-1,-3,-3,-4,
-3,-1,0,2,2,1,1,0,
-2,-1,1,6,8,6,4,1,
-1,-2,-1,-1,1,2,2,1,
-2,-2,-4,-3,-2,0,2,4,
5,4,3,3,3,1,1,2,
1,0,-1,-1,2,3,3,2,
3,2,0,0,0,-1,-2,-3,
-3,-2,0,-1,-2,-3,-1,1,
0,-1,-1,2,4,5,2,0,
-2,1,3,4,3,1,-1,0,
1,2,1,0,0,2,3,2,
1,-1,-3,-4,-3,-2,0,0,
1,1,3,2,1,0,-1,-1,
-1,-1,0,1,3,6,6,4,
4,2,3,3,3,3,0,-1,
-2,0,3,2,1,0,0,1,
1,0,-1,-2,-2,0,2,3,
3,2,0,-1,0,1,3,1,
-1,-4,-4,2,0,-3,-5,-6,
-5,-4,-1,-1,0,-1,-1,-1,
-1,-2,-3,-3,-1,1,-1,0,
-1,0,1,2,1,1,0,-1,
-1,1,2,2,-1,-2,0,1,
1,0,1,3,4,4,1,-1,
0,1,2,1,0,2,2,3,
3,0,-1,-1,0,2,1,0,
1,1,1,3,3,4,4,3,
2,-1,-1,-2,-1,2,2,2,
1,0,-1,-1,-1,-2,-3,-2,
-4,-3,-3,-1,1,2,2,1,
1,2,2,1,1,0,-1,1,
0,-1,-1,1,2,3,3,4,
4,2,1,1,1,-1,-4,-4,
-3,-1,2,4,5,5,1,0,
0,1,3,2,1,0,0,0,
1,1,1,1,0,0,0,-1,
-2,-3,-3,-2,-2,-1,-1,-1,
-1,1,0,-2,-3,-4,-5,-3,
1,4,4,4,1,0,0,0,
1,3,2,1,-1,0,3,2,
3,3,0,-1,-3,-3,-4,-3,
-3,-1,-1,-1,-2,-2,-4,-5,
-7,-6,-5,-3,0,1,2,2,
1,0,-2,0,2,2,0,0,
1,2,2,2,2,3,3,2,
1,0,1,0,-1,-3,-2,-1,
-1,-1,0,2,2,2,-1,-2,
-2,1,0,0,-2,-3,-3,-1,
0,1,0,2,4,4,3,2,
1,1,1,2,2,3,3,1,
1,2,1,0,-1,-3,-2,-2,
-2,-1,-1,-1,0,-1,-2,-2,
-2,2,4,3,4,4,4,3,
1,0,0,0,0,1,0,1,
3,4,2,1,-1,0,1,1,
-1,-4,-4,-3,-1,-1,0,0,
0,-1,0,1,3,3,1,-2,
0,1,0,1,2,6,7,7,
5,4,4,5,4,3,2,3,
4,4,2,1,0,1,1,2,
2,1,3,4,4,3,3,3,
5,4,3,3,5,4,3,3,
1,0,-1,-1,-1,-1,-2,-3,
-2,0,1,2,0,-3,-3,-2,
-2,-4,-5,-6,-5,-4,-1,1,
1,-1,-2,0,0,3,2,1,
1,0,1,2,0,-2,-3,-1,
1,4,5,3,-1,-4,-2,-2,
-1,-1,-2,-3,-4,-5,-6,-6,
-6,-5,-2,-2,-2,-2,-1,0,
1,1,1,1,1,1,-1,-1,
-3,-5,-4,-3,-1,-1,0,0,
-1,-2,-3,-2,-2,-1,0,-1,
-1,-1,-2,0,3,5,6,5,
4,2,2,3,3,2,3,2,
1,1,-1,-2,0,2,4,4,
4,2,-2,0,3,3,3,1,
-1,-1,-1,0,-1,-1,-1,-2,
-1,-3,-3,-5,-5,-4,-1,-1,
0,0,0,0,0,-1,-1,-1,
0,-1,-1,-1,0,-1,-2,-3,
-2,-3,-1,1,1,1,1,2,
0,-2,-3,-3,-4,-4,-5,-3,
0,0,-1,-1,0,-1,-1,-1,
-1,0,0,-1,-2,-1,-1,-2,
0,3,4,2,0,0,-1,-2,
-2,0,2,2,1,2,2,2,
-1,-2,-3,0,0,0,0,1,
3,4,4,3,1,-1,0,0,
1,1,0,1,1,-1,0,-1,
0,0,2,2,3,3,1,-1,
-1,-1,0,1,2,0,1,-1,
0,0,1,1,0,0,-1,-1,
1,3,3,1,-1,-2,0,2,
3,3,1,1,-1,-3,-4,-4,
-2,-1,1,-1,-2,-3,-3,-1,
0,-2,-2,-3,-5,-4,-3,-3,
-2,-3,-1,0,0,0,-2,-2,
0,2,4,4,3,1,-3,-4,
-2,2,4,3,1,-2,-3,-4,
-3,-1,0,1,2,1,1,0,
0,0,-1,-3,-2,0,2,3,
2,0,-1,-2,-2,-2,1,0,
0,1,2,3,2,1,-1,-2,
-2,-1,-2,0,0,-3,-3,-3,
-1,0,0,-1,-2,-2,0,1,
1,1,1,0,-1,-1,0,2,
3,4,2,-1,-2,-3,-2,0,
2,3,2,2,1,1,0,0,
1,1,-1,-2,-2,-4,-3,-1,
1,1,1,1,1,2,2,2,
2,1,1,-1,-3,-3,-3,-2,
-1,0,2,1,2,1,0,1,
0,1,1,0,1,1,2,-1,
-3,-3,-4,-3,0,1,0,0,
-1,0,-2,-3,-4,-3,-2,-1,
-1,-1,0,0,-1,0,0,0,
0,0,-1,-2,-3,-2,-4,-2,
-3,-1,0,0,0,-1,-2,-2,
-1,1,1,2,1,0,-1,-2,
0,1,3,3,2,1,0,0,
0,-2,-2,-2,-1,0,1,0,
-1,-1,-3,-4,-3,-3,-1,0,
1,0,-2,-2,-1,-1,-3,-3,
-2,-3,-2,-2,0,0,0,-1,
1,3,3,4,3,0,0,-1,
1,1,1,-1,-1,-2,0,0,
0,2,3,3,1,-1,-1,-1,
-1,-1,0,0,0,0,0,1,
0,0,-2,-2,-1,0,0,-2,
-3,-5,-3,-3,-2,-2,-2,-2,
-3,-3,-2,-3,-1,-1,0,1,
2,-1,-2,-3,-5,-3,0,4,
5,4,3,2,0,1,0,0,
-1,0,2,3,2,0,-1,0,
2,2,3,3,4,3,2,1,
-1,1,3,5,5,3,2,1,
2,0,-1,-1,0,0,0,-1,
0,-1,0,-2,-2,-1,1,4,
5,3,1,1,0,0,0,-1,
0,2,1,0,-2,-2,-2,0,
1,2,1,1,2,2,2,1,
0,0,0,0,-2,-2,-2,-2,
-1,0,-1,0,0,0,0,0,
2,2,1,0,-3,-4,-2,2,
3,2,0,-2,-2,-1,1,2,
3,3,1,2,1,1,0,1,
1,2,2,2,0,0,1,5,
5,4,1,-1,-1,0,1,1,
0,1,1,3,3,2,1,0,
1,1,3,2,2,0,0,-1,
-1,-1,-1,-2,0,0,1,0,
1,0,0,-2,-2,-1,1,1,
1,-1,-1,-2,-1,-1,0,-1,
-1,0,0,-1,-1,-1,-1,0,
-1,-3,-3,-1,0,1,3,4,
2,2,1,0,0,0,0,0,
0,1,1,1,3,4,4,3,
1,-1,-3,-3,-3,-2,-3,-2,
-2,-2,-1,-1,0,-1,-1,-2,
-1,-2,0,0,-1,-2,-2,0,
-1,0,2,2,1,0,1,1,
1,2,2,2,1,0,0,-1,
0,0,-1,-1,-2,-1,0,1,
-1,-1,-1,0,0,2,2,1,
0,0,0,2,2,3,3,3,
1,0,3,2,3,2,0,0,
-1,-1,-1,1,0,1,1,0,
2,2,3,3,2,2,0,0,
-1,-2,-2,-1,0,-1,-1,0,
0,0,0,-1,1,2,1,1,
1,0,0,1,2,1,1,0,
2,2,1,0,-1,-1,0,1,
3,5,5,4,2,0,-2,-3,
-2,-2,-1,1,0,-1,-2,-2,
-1,-1,0,1,0,-1,-1,-2,
-2,-1,1,2,4,3,2,2,
2,1,1,1,1,2,1,-1,
-1,-1,-2,-2,-1,1,0,0,
0,0,-1,1,2,2,1,2,
1,0,-1,-1,-1,1,1,1,
2,2,3,2,1,1,0,0,
-1,-2,-2,-1,0,1,1,1,
1,2,1,2,2,1,1,0,
1,0,1,1,0,0,-1,1,
-1,0,-1,-1,1,1,2,2,
2,2,1,0,-2,-1,0,1,
0,1,0,0,0,0,0,0,
-1,0,0,0,0,0,-1,1,
1,3,4,3,1,-1,-2,-3,
0,2,3,2,1,0,0,-1,
-2,-3,-2,0,0,1,0,1,
0,-1,0,1,2,2,2,1,
-1,-2,-1,-1,0,1,1,1,
1,0,-1,0,0,1,2,3,
3,0,0,-2,-1,-1,-1,-2,
-2,-1,0,1,0,0,-1,-2,
-2,0,1,1,0,-1,0,0,
1,1,0,0,0,0,0,0,
1,0,0,-2,-2,-1,-1,-1,
-1,-1,0,-1,-1,-1,-1,0,
0,-1,-1,-1,0,-1,0,1,
1,2,3,2,3,2,2,1,
0,0,2,3,4,3,2,2,
2,1,-1,-1,-1,-2,-1,-2,
-2,-2,-3,-2,-2,-2,0,1,
1,2,2,1,0,-2,-2,0,
1,2,2,0,-1,0,2,1,
1,-1,-2,-1,-2,-1,-1,-1,
-1,-1,-1,0,1,0,-2,-3,
-4,-4,-4,-3,-3,-2,-1,-1,
-1,-2,-1,0,-1,-2,-1,-1,
0,-1,0,-1,-1,-1,-1,-2,
-1,-1,-1,0,0,-1,-2,-2,
-1,0,0,0,1,0,0,0,
0,-1,-1,1,2,2,2,2,
0,0,1,2,2,2,2,1,
1,0,0,0,0,2,2,2,
2,2,1,0,0,0,-1,0,
-1,1,2,1,0,-1,0,1,
3,3,3,2,1,0,-2,-2,
-1,-1,-1,1,1,1,1,2,
3,2,2,3,1,1,1,1,
-1,-2,-1,1,3,3,2,1,
0,1,1,1,0,-1,0,0,
0,0,0,-1,-1,0,0,0,
0,-1,-1,-1,0,0,0,-1,
0,2,3,3,3,2,1,1,
1,0,-1,-2,-2,-1,-1,1,
1,0,-2,-2,-2,0,-1,-2,
-2,-1,0,0,1,0,1,3,
1,1,0,-1,-1,0,1,1,
1,1,0,-2,-1,-1,-1,-1,
-2,-1,-1,-1,-1,-1,-2,-2,
-1,-1,0,-2,-1,0,1,0,
1,1,1,0,1,1,1,0,
0,0,1,1,0,-1,-3,-2,
-2,0,2,3,2,1,-1,-1,
-1,0,1,0,-1,-2,0,0,
2,3,3,3,3,1,-2,-3,
-2,-2,-2,-1,-2,-1,-2,-1,
-2,-2,-1,-1,0,-2,-3,-4,
-4,-3,-2,-1,0,0,-1,-1,
-2,-2,0,1,2,2,0,-3,
-4,-4,-3,-3,-1,0,0,1,
1,1,0,0,0,0,0,0,
0,0,-2,-2,-2,-1,1,1,
1,-1,0,-2,-2,-1,0,0,
1,1,1,1,1,0,1,0,
0,0,1,1,0,1,0,0,
-1,-1,-3,-3,-2,-1,0,1,
0,-1,-2,-2,-1,1,2,2,
2,1,-1,-2,-3,-2,-1,-2,
-2,-1,-1,-1,0,-1,0,-1,
0,1,-1,-2,-2,-3,-2,-1,
1,1,3,3,1,0,-1,-2,
-1,-1,-2,0,0,0,-2,-3,
-3,-2,-1,-1,0,0,-1,-1,
-1,-1,1,1,1,1,0,-1,
-1,-2,-1,-1,-1,-2,-3,-2,
-1,0,-1,-1,-1,-1,1,0,
0,0,1,1,2,1,2,1,
1,0,0,-1,-1,-2,-2,-3,
-2,-2,-2,-2,-2,-2,-1,0,
1,2,1,1,-1,-1,-1,-1,
-1,-1,-1,-1,1,0,1,1,
0,1,0,-1,0,0,1,0,
0,2,3,3,2,2,0,-2,
-2,-2,0,1,0,0,0,-1,
-1,-1,-1,-2,-3,-2,-2,0,
-1,-1,-1,0,1,0,0,0,
1,1,0,0,0,-1,0,-1,
-1,1,0,0,0,0,-1,1,
1,0,0,0,-1,0,0,1,
1,0,0,-1,-1,-1,-1,-1,
-1,0,0,0,0,0,0,0,
0,-1,-1,0,1,-1,-1,-2,
-2,0,0,0,0,0,-1,-1,
-1,-2,-3,-2,-3,-1,-1,-1,
-1,-1,1,1,1,1,1,1,
1,1,1,0,2,1,2,1,
1,0,-1,0,-1,-1,-1,1,
0,1,0,0,-1,0,1,0,
1,1,0,0,-1,-1,-1,-1,
0,0,1,1,1,1,0,-1,
-1,-1,-1,0,1,2,2,1,
0,1,1,1,0,0,2,1,
0,0,0,1,3,3,3,2,
1,0,0,0,-1,1,1,0,
0,1,1,1,1,2,2,1,
0,-2,-3,-1,-1,-1,0,-1,
-1,-1,1,1,0,0,0,-1,
-1,-1,-1,-1,0,1,2,1,
1,0,-1,0,1,0,0,0,
-1,0,-1,-1,0,-1,-1,0,
0,0,0,-1,-1,-1,-1,-1,
0,1,1,1,0,0,-1,-1,
-1,-2,-1,0,0,1,0,0,
1,0,-1,-1,0,0,0,1,
1,0,0,0,1,1,0,-1,
0,-2,-1,0,0,1,0,0,
1,1,2,2,1,2,0,2,
0,0,0,1,0,0,0,-1,
-1,-1,0,-1,-2,-1,-1,-2,
-1,-2,0,0,0,-1,1,2,
0,-2,-3,-3,-1,-1,0,1,
1,1,1,0,2,1,0,-1,
0,1,3,1,1,0,0,1,
1,2,2,1,1,1,0,1,
1,1,1,2,1,0,0,-1,
-1,-1,-1,-1,-1,0,1,1,
0,1,0,0,-1,-1,-1,0,
1,0,1,0,0,0,-1,-1,
-1,0,0,0,0,-1,-1,-2,
-3,-2,0,1,2,1,1,-1,
-1,0,0,1,2,3,4,3,
1,0,0,0,1,1,1,1,
0,0,0,1,1,1,0,0,
0,0,0,-1,-1,-1,-1,0,
0,0,0,1,1,-1,0,-2,
-1,0,0,1,0,-1,0,0,
0,0,0,1,0,1,2,2,
2,1,2,1,0,-1,-1,-1,
1,2,2,1,1,0,0,-2,
-1,0,1,2,3,1,2,1,
1,0,0,-1,-1,-2,-1,1,
0,1,1,1,0,-1,-1,0,
0,0,0,1,1,2,2,1,
1,1,1,0,1,0,0,0,
0,-1,0,-1,-1,0,0,1,
-1,0,1,2,2,3,2,1,
-1,-1,-1,0,0,0,1,3,
2,2,1,1,1,0,1,1,
2,2,0,-1,-1,0,1,1,
2,2,1,3,3,3,2,2,
2,0,0,0,1,2,2,2,
1,0,0,1,1,1,0,0,
0,0,-2,-2,-1,0,1,1,
2,1,0,-1,1,0,2,2,
2,2,2,3,2,2,0,0,
0,-2,-1,0,1,2,2,2,
1,1,0,1,0,0,0,0,
1,2,1,1,0,0,0,-1,
0,0,0,0,-1,-1,0,-1,
-1,0,1,1,1,-1,-2,-2,
-1,1,1,1,1,0,-1,-1,
-1,-1,0,1,0,-1,-1,-2,
-1,0,0,0,0,0,-1,1,
0,1,1,0,1,0,2,2,
1,0,0,0,1,1,0,0,
-1,-2,-2,-1,0,0,1,0,
0,0,-1,-1,-1,0,0,1,
1,1,2,0,0,0,1,1,
2,1,2,1,0,-1,-1,-1,
-1,-1,0,1,0,0,-2,-3,
-3,-2,-2,0,2,2,2,2,
1,1,-1,-1,0,0,0,1,
1,-1,-1,-1,-1,0,1,2,
1,0,0,-2,-1,-1,-2,-3,
-3,-2,-1,-1,0,-2,-3,-3,
-2,-1,-1,1,0,0,0,0,
1,0,-1,-2,-2,-2,-1,0,
1,1,0,-1,-2,-2,-1,-1,
0,0,0,0,-1,0,0,1,
0,1,-1,-2,-1,-1,-1,-1,
0,0,0,-1,0,0,0,0,
0,-1,-1,-2,-1,0,0,0,
0,0,-1,0,-1,1,0,1,
1,1,0,1,0,0,-1,-2,
-2,-2,-2,-2,-1,0,0,1,
1,0,0,-2,-1,0,0,0,
0,-1,1,1,3,2,2,0,
-2,-1,0,1,1,0,1,-1,
0,0,1,1,0,1,0,1,
1,0,0,-1,-1,0,0,-1,
-1,-2,-2,0,1,1,1,0,
0,-1,0,1,1,1,0,0,
1,0,0,-1,-3,-3,-2,-1,
-1,0,0,1,1,2,1,2,
1,-1,0,-1,-1,1,2,2,
0,0,-1,0,0,0,1,1,
1,1,2,1,0,-1,0,1,
1,1,1,0,0,-1,0,1,
0,0,1,0,0,-2,-1,-1,
0,0,0,0,0,0,1,0,
1,1,0,0,-1,-1,0,1,
0,0,-1,-1,-1,-1,-1,-1,
-2,-1,-2,-3,-2,-2,-1,0,
-2,-1,-1,-1,0,-1,-1,0,
0,1,1,1,1,1,0,1,
0,1,0,-1,0,-1,-1,-1,
-1,0,0,0,-1,-2,-1,0,
0,-1,-1,-2,-2,-2,-1,0,
-1,-1,-1,0,0,1,1,0,
0,1,2,3,2,0,0,0,
0,0,0,2,2,1,1,1,
1,0,1,1,1,0,1,0,
1,1,0,1,0,0,0,-1,
-1,0,0,-1,0,-1,0,0,
-1,-1,-1,0,-1,0,0,1,
2,1,0,0,-1,-1,-1,0,
1,1,0,-1,-1,-2,-2,-2,
-1,-1,0,0,0,0,0,1,
1,1,-1,-1,-1,-1,0,1,
1,1,0,0,0,1,2,1,
3,2,2,1,1,0,0,0,
-1,-1,-1,-1,-1,-2,-3,-2,
-1,-1,1,1,1,0,0,-1,
0,-1,-1,1,-1,0,-1,-1,
0,0,0,0,-1,-1,1,0,
-1,-1,0,0,0,-1,-1,0,
0,0,0,0,-1,0,1,0,
-1,0,0,0,0,1,1,1,
1,1,0,1,1,1,-1,-1,
-1,-1,-1,0,-1,0,0,-1,
-1,0,0,0,-1,-1,-1,-1,
0,0,1,1,1,0,0,-1,
-1,-1,-1,-1,-1,-1,-2,-1,
-1,0,1,1,1,0,0,-1,
-1,0,0,0,0,0,0,0,
1,0,1,0,0,0,-1,1,
1,-1,-1,0,0,-1,-1,-1,
-1,0,1,2,2,2,0,0,
1,0,0,0,-1,0,0,1,
0,0,-1,0,0,1,1,0,
0,0,0,0,0,1,1,0,
1,1,0,0,-1,-1,-1,0,
-1,-1,-1,-1,-1,0,1,0,
-2,-2,-2,-1,-1,0,0,0,
0,0,0,0,0,-1,-1,-1,
-1,0,0,0,0,0,0,1,
0,0,0,0,1,1,1,1,
1,-1,0,0,0,0,-1,0,
-1,-2,-1,-1,0,0,0,1,
0,0,-1,-1,-1,0,0,0,
-1,-1,0,0,1,0,0,1,
0,0,-1,-1,-1,0,-1,1,
1,1,2,1,1,-1,-1,-1,
0,0,0,0,0,-1,0,0,
0,0,-1,-1,-1,0,0,0,
2,1,1,0,1,1,0,0,
0,1,1,1,1,1,0,0,
0,-1,1,0,1,2,2,2,
0,0,0,-1,1,0,0,0,
0,0,0,0,0,1,1,2,
1,1,2,2,2,0,0,0,
0,-1,0,-1,0,0,0,0,
-1,-1,-1,-1,0,0,0,0,
1,1,1,2,3,2,2,2,
3,2,3,2,1,1,1,1,
0,1,0,1,0,0,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,
0,0,1,2,2,2,1,1,
-1,0,0,1,0,1,0,1,
0,1,1,0,0,0,1,0,
-1,-1,-1,0,0,0,1,1,
0,0,0,0,1,0,0,-1,
-1,0,0,0,0,-1,0,1,
0,0,0,0,-1,0,0,0,
1,1,1,0,0,0,0,0,
1,1,1,1,1,1,0,0,
-1,0,0,0,0,0,1,1,
2,3,2,3,2,2,2,1,
2,1,2,1,2,1,0,0,
0,0,0,0,0,0,0,0,
0,1,1,1,1,1,1,1,
1,1,0,1,1,1,1,1,
-1,-1,-2,-2,-1,0,1,0,
-1,0,-1,0,-1,-1,0,1,
0,1,0,1,1,1,0,0,
-1,0,0,0,0,0,-1,-1,
-1,-1,-2,-1,0,0,-1,1,
1,1,0,0,1,1,1,0,
1,0,-1,-1,-1,-1,-1,-1,
-1,0,1,1,0,1,-1,1,
0,1,1,-1,0,-1,-1,1,
1,0,0,1,1,1,1,0,
0,-1,0,0,0,-1,0,0,
0,-1,-1,-1,0,0,0,0,
1,0,0,-1,-1,-2,-1,-1,
0,0,1,0,0,-1,-3,-3,
-1,0,0,1,0,0,-1,-1,
0,-1,0,1,1,1,1,1,
1,2,1,1,0,0,1,1,
2,2,2,1,0,0,0,-1,
0,0,0,-1,0,0,0,0,
-2,-1,-1,-2,-1,0,0,};
本发明实施例中的h(n)缩放到short类型的具体数值不限定长度为13800 点,可以根据实际需求进行调整,例如在使用中如果性能有较大压力,可以只取前10000点,效果也可以,甚至8000点仍可以接受,另外可以看到左序列hL(n) 和右序列hR(n),靠前的部分几乎都是0,可以将靠前的接近0的时段截掉直至有明确幅度的时间点以前,这不会影响效果。这些short类型的具体数值在具体使用时,都将变成float类型。
本发明实施例还公开了另一种音频处理方法,可以包括将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;其中,该第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n)的音频指纹信息的相似度大于预设阈值;该第一冲激响应序列h(n)的序列特征包括音频能量衰减60分贝所经历的时长为第一时长;该第一时长的取值范围是[360毫秒,440毫秒]。
或者,音频处理方法可以包括将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;其中,该第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n)的音频指纹信息的相似度大于预设阈值;该第一冲激响应序列 h(n)的序列特征包括在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;该第一时刻的取值范围是[15.3毫秒,18.7毫秒],该第二时刻的取值范围是[18毫秒,22毫秒],该第三时刻的取值范围是[20.7毫秒,25.3毫秒];且该第二时刻大于该第一时刻,该第三时刻大于该第二时刻。
又或者,音频处理方法可以包括将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,该第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n) 的音频指纹信息的相似度大于预设阈值;该第一冲激响应序列h(n)的序列特征包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在该第一时间段后整个序列的高频随时间逐渐衰减;该第一时间段的取值范围是[9毫秒,11毫秒]。
又或者,音频处理方法可以包括将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,该第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n) 的音频指纹信息的相似度大于预设阈值;该第一冲激响应序列h(n)的序列特征包括到达第六时刻之前高频衰减的速度为第一速度,该第六时刻之后高频衰减的速度为第二速度;该第一速度小于该第二速度;该第六时刻的取值范围是[72 毫秒,88毫秒]。
也就是说,该第二冲激响应序列h’(n)的音频指纹信息与上述图3至图10中的第一冲激响应序列h(n)的音频指纹信息的相似度大于预设阈值。或者与该第二冲激响应序列h’(n)的音频指纹信息与上述h(n)缩放到short类型的具体数值对应的音频指纹信息的相似度大于预设阈值。本发明实施例中的预设阈值可以为80%、85%或90%等。
本发明实施例中的音频指纹信息可以通过音频指纹技术(Audio fingerprintingtechnology)来提取。音频指纹技术采用特定的算法将一段音频中独一无二的数字特征以标识符的形式提取出来,即形成了音频指纹信息,以用于识别海量的声音样本或跟踪定位样本在数据库中的位置。音频指纹信息之间的匹配或识别是高精度的匹配,不依赖于文件meta信息,加水印和文件哈希值。匹配或识别过程不受音频本身的储存格式,编码方式,码率和压缩技术影响。本发明实施例中当第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列 h(n)的音频指纹信息的相似度大于预设阈值,即表明第二冲激响应序列h’(n)与第一冲激响应序列h(n)高度相似。那么通过该第二冲激响应序列h’(n)的序列特征来进行卷积计算,同样达到第一冲激响应序列h(n)的卷积效果,能够解决了现有技术如何对3D化后的声音进行再处理,使得声音仿佛来自周围空间,以更好地模拟或重建某个具体真实环境响起的效果的技术问题,使得声音仿佛来自周围空间,给听者带来极强的临场感。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种音频处理装置,下面结合附图来进行详细说明:
如图11示出的本发明实施例提供的音频处理装置的结构示意图,音频处理装置110可以包括:至少一个处理器1101,例如CPU,至少一个网络接口1104,用户接口1103,存储器1105,至少一个通信总线1102、显示屏1106。其中,通信总线1102用于实现这些组件之间的连接通信。其中,用户接口1103可以包括鼠标、键盘等等。网络接口1104可选的可以包括标准的有线接口、无线接口 (如WI-FI接口)。存储器1105可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器1105包括本发明实施例中的flash。存储器1105可选的还可以是至少一个位于远离前述处理器1101的存储系统。如图11所示,作为一种计算机存储介质的存储器1105中可以包括操作系统、网络通信模块、用户接口模块以及多条音频处理指令。
在图11所示的音频处理装置110中,处理器1101可以用于调用或加载存储器1105中存储的音频处理指令,并执行以下操作:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征包括音频能量衰减60分贝所经历的时长为第一时长;该第一时长的取值范围是[360毫秒, 440毫秒]。
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征还包括,在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;该第一时刻的取值范围是[15.3毫秒,18.7毫秒],该第二时刻的取值范围是[18毫秒,22毫秒],该第三时刻的取值范围是[20.7毫秒,25.3毫秒];且该第二时刻大于该第一时刻,该第三时刻大于该第二时刻。
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征还包括,在第四时刻出现第四反射声,在第五时刻出现第五反射声;该第四时刻的取值范围是[43.2毫秒,52.8毫秒],该第五时刻的取值范围是[62.1毫秒,75.9毫秒]。
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征还包括,在初始的第一时间段内各个频率的幅度差小于第一阈值,在该第一时间段后整个序列的高频随时间逐渐衰减;该第一时间段的取值范围是[9毫秒,11毫秒]。
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征还包括,到达第四时刻时4k以上的频率响应出现提升;该第四时刻的取值范围是[43.2毫秒, 52.8毫秒];该提升所经历的时长取值范围是[5毫秒,7毫秒]。
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征还包括,到达第五时刻时4k以上的频率响应出现提升;该第五时刻的取值范围是[62.1毫秒, 75.9毫秒];该提升所经历的时长取值范围是[5毫秒,7毫秒]。
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征还包括,到达第六时刻之前高频衰减的速度为第一速度,该第六时刻之后高频衰减的速度为第二速度;该第一速度小于该第二速度;该第六时刻的取值范围是[72毫秒, 88毫秒]。
在本发明的一个实施例中,该第一冲激响应序列h(n)的序列特征还包括,该第六时刻之后,音频能量衰减60分贝时,4k以上的频率能量与4k以下的频率能量的比值的取值范围是[0.78,0.96]。
本发明还提供了一种音频处理装置,包括卷积计算单元,用于经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;该第一冲激响应序列h(n)的序列特征包括上述图3至图10任意实施例中的第一冲激响应序列h(n)的序列特征。
本发明实施例还公开了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括音频处理指令,该程序指令当被处理器执行时使该处理器执行如上述图3至图10任意实施例中的音频处理方法的步骤。
实施本发明实施例,通过将经过HRTF滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;该第一冲激响应序列h(n)是一个有限长度的因果序列,包括特有的序列特征以模拟某个真实环境的冲激响应,解决了现有技术如何对3D化后的声音进行再处理,使得声音仿佛来自周围空间,以更好地模拟或重建某个具体真实环境响起的效果的技术问题,使得声音仿佛来自周围空间,给听者带来极强的临场感。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (13)
1.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒];在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
2.如权利要求1所述的方法,其特征在于,所述第一冲激响应序列h(n)的序列特征还包括,在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7毫秒,25.3毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻。
3.如权利要求1所述的方法,其特征在于,所述第一冲激响应序列h(n)的序列特征还包括,在第四时刻出现第四反射声,在第五时刻出现第五反射声;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒],所述第五时刻的取值范围是[62.1毫秒,75.9毫秒]。
4.如权利要求1所述的方法,其特征在于,所述第一冲激响应序列h(n)的序列特征还包括,到达第五时刻时4k以上的频率响应出现提升;所述第五时刻的取值范围是[62.1毫秒,75.9毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
5.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7毫秒,25.3毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻;在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
6.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
7.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第一冲激响应序列h(n)进行卷积计算,得到卷积计算后的音频信号数据;
所述第一冲激响应序列h(n)的序列特征包括到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒];在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
8.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n)的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括音频能量衰减60分贝所经历的时长为第一时长;所述第一时长的取值范围是[360毫秒,440毫秒];所述第一冲激响应序列h(n)的序列特征还包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
9.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n)的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括在第一时刻出现第一反射声,在第二时刻出现第二反射声,在第三时刻出现第三反射声;所述第一时刻的取值范围是[15.3毫秒,18.7毫秒],所述第二时刻的取值范围是[18毫秒,22毫秒],所述第三时刻的取值范围是[20.7毫秒,25.3毫秒];且所述第二时刻大于所述第一时刻,所述第三时刻大于所述第二时刻;所述第一冲激响应序列h(n)的序列特征还包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
10.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n)的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];所述第一冲激响应序列h(n)的序列特征还包括到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
11.一种音频处理方法,其特征在于,包括:
将经过时域的头相关冲激响应滤波处理后得到的音频信号序列与第二冲激响应序列h’(n)进行卷积计算,得到卷积计算后的音频信号数据;
其中,所述第二冲激响应序列h’(n)的音频指纹信息与第一冲激响应序列h(n)的音频指纹信息的相似度大于预设阈值;所述第一冲激响应序列h(n)的序列特征包括到达第六时刻之前高频衰减的速度为第一速度,所述第六时刻之后高频衰减的速度为第二速度;所述第一速度小于所述第二速度;所述第六时刻的取值范围是[72毫秒,88毫秒];所述第一冲激响应序列h(n)的序列特征还包括在初始的第一时间段内各个频率的幅度差小于第一阈值,在所述第一时间段后整个序列的高频随时间逐渐衰减;所述第一时间段的取值范围是[9毫秒,11毫秒];到达第四时刻时4k以上的频率响应出现提升;所述第四时刻的取值范围是[43.2毫秒,52.8毫秒];所述提升所经历的时长取值范围是[5毫秒,7毫秒]。
12.一种音频处理装置,其特征在于,包括存储器和处理器,其中所述存储器用于存储多条音频处理指令,所述处理器用于加载所述音频处理指令并执行实现权利要求1-11任一项所述的方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括音频处理指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-11任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710427171.6A CN107358962B (zh) | 2017-06-08 | 2017-06-08 | 音频处理方法及音频处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710427171.6A CN107358962B (zh) | 2017-06-08 | 2017-06-08 | 音频处理方法及音频处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107358962A CN107358962A (zh) | 2017-11-17 |
CN107358962B true CN107358962B (zh) | 2018-09-04 |
Family
ID=60272397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710427171.6A Active CN107358962B (zh) | 2017-06-08 | 2017-06-08 | 音频处理方法及音频处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107358962B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108766449B (zh) * | 2018-05-30 | 2020-10-27 | 中国科学技术大学 | 一种音频信号的可逆水印实现方法 |
CN109754825B (zh) * | 2018-12-26 | 2021-02-19 | 广州方硅信息技术有限公司 | 一种音频处理方法、装置、设备及计算机可读存储介质 |
CN109545174B (zh) * | 2018-12-26 | 2021-08-24 | 广州方硅信息技术有限公司 | 一种音频处理方法、装置及设备 |
CN110225432B (zh) * | 2019-05-10 | 2021-08-31 | 中国船舶重工集团公司第七一五研究所 | 一种声纳目标立体收听方法 |
CN112652290B (zh) * | 2020-12-14 | 2023-01-20 | 北京达佳互联信息技术有限公司 | 产生混响音频信号的方法及音频处理模型的训练方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990041134A (ko) * | 1997-11-21 | 1999-06-15 | 윤종용 | 머리 관련 전달 함수를 이용한 3차원 사운드 시스템 및 3차원 사운드 구현 방법 |
DE69823228T2 (de) * | 1997-12-19 | 2005-04-14 | Daewoo Electronics Corp. | Raumklangsignalverarbeitungsvorriehtung und -verfahren |
JP4546151B2 (ja) * | 2004-05-26 | 2010-09-15 | 株式会社日立製作所 | 音声コミュニケーション・システム |
CN1753578A (zh) * | 2004-09-24 | 2006-03-29 | 乐金电子(惠州)有限公司 | 三维立体音效的播放方法及装置 |
KR100708196B1 (ko) * | 2005-11-30 | 2007-04-17 | 삼성전자주식회사 | 모노 스피커를 이용한 확장된 사운드 재생 장치 및 방법 |
SG135058A1 (en) * | 2006-02-14 | 2007-09-28 | St Microelectronics Asia | Digital audio signal processing method and system for generating and controlling digital reverberations for audio signals |
TWI475896B (zh) * | 2008-09-25 | 2015-03-01 | Dolby Lab Licensing Corp | 單音相容性及揚聲器相容性之立體聲濾波器 |
CN102314875B (zh) * | 2011-08-01 | 2016-04-27 | 北京音之邦文化科技有限公司 | 一种音频文件的识别方法和装置 |
CN102523553B (zh) * | 2012-01-29 | 2014-02-19 | 昊迪移通(北京)技术有限公司 | 一种针对移动终端设备并基于声源内容的全息音频方法和装置 |
CN102750956B (zh) * | 2012-06-18 | 2014-07-16 | 歌尔声学股份有限公司 | 一种单通道语音去混响的方法和装置 |
EP2840811A1 (en) * | 2013-07-22 | 2015-02-25 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Method for processing an audio signal; signal processing unit, binaural renderer, audio encoder and audio decoder |
CN105792090B (zh) * | 2016-04-27 | 2018-06-26 | 华为技术有限公司 | 一种增加混响的方法与装置 |
-
2017
- 2017-06-08 CN CN201710427171.6A patent/CN107358962B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107358962A (zh) | 2017-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107358962B (zh) | 音频处理方法及音频处理装置 | |
JP7280916B2 (ja) | 見かけのサイズをもつオーディオ・オブジェクトの任意のラウドスピーカー・レイアウトへのレンダリング | |
US10129685B2 (en) | Audio signal processing method and device | |
US20160232902A1 (en) | Binaural rendering method and apparatus for decoding multi channel audio | |
EP2434491B1 (en) | Sound processing device and sound processing method | |
TW202310637A (zh) | 用於增強3d音頻編輯與呈現之設備、方法及非暫態媒體 | |
CN109144464A (zh) | 一种音频输出的方法、装置及Android设备 | |
KR20190094140A (ko) | 다채널 오디오 신호의 바이노럴 렌더링 방법 및 장치 | |
Kalliris et al. | Media management, sound editing and mixing | |
EP4142310A1 (en) | Method for processing audio signal and electronic device | |
WO2023005193A1 (zh) | 字幕显示方法及装置 | |
CN104657120A (zh) | 一种信息处理方法及电子设备 | |
KR100280844B1 (ko) | 현실감있는 입체음향구현을 위한 가상음장 생성 방법 | |
CN104424971A (zh) | 一种音频文件播放方法及装置 | |
CN111179970B (zh) | 音视频处理方法、合成方法、装置、电子设备及存储介质 | |
WO2020124679A1 (zh) | 视频处理参数信息的预配置方法、装置及电子设备 | |
KR20190081163A (ko) | 입체 음향 컨텐츠 저작 툴을 이용한 선택적 광고 제공 방법 및 이를 위한 어플리케이션 | |
JP7571192B2 (ja) | 見かけのサイズをもつオーディオ・オブジェクトの任意のラウドスピーカー・レイアウトへのレンダリング | |
CN104461493B (zh) | 一种信息处理方法以及电子设备 | |
KR20190079993A (ko) | 입체 음향 컨텐츠 저작 방법 및 이를 위한 어플리케이션 | |
Song et al. | An Efficient Method Using the Parameterized HRTFs for 3D Audio Real-Time Rendering on Mobile Devices | |
WO2024179844A1 (en) | Multi-stage vector quantization for audio coding | |
KR102712214B1 (ko) | 임의적 라우드스피커 배치들로의 겉보기 크기를 갖는 오디오 오브젝트들의 렌더링 | |
Freedman et al. | Perfect periodic correlation sequences | |
JP2022122414A (ja) | 音場再現装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |