');mask:url('data:image/svg+xml, ');-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--bloghash-primary)}#main{position:relative;-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-ms-flex-preferred-size:auto;flex-basis:auto;word-break:break-word}#main>.bloghash-container{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}#main>.bloghash-container #primary{min-width:0;min-height:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-ms-flex-preferred-size:auto;flex-basis:auto}#main>.bloghash-container #secondary{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.bloghash-widget .wp-block-heading{position:relative}.bloghash-sidebar-position__right-sidebar #primary{padding-right:5rem}.post-category .cat-links a{font-size:12px;padding:7px 12px;letter-spacing:.06em;font-weight:600;line-height:1.2;text-align:center;display:inline-block;margin-bottom:.5rem;text-decoration:none;border-radius:var(--bloghash-radius);background-color:var(--bloghash-primary_80);color:var(--bloghash-primary)}.breadcrumbs{max-width:100%}.breadcrumb-trail{width:100%}.breadcrumb-trail .trail-items li{display:inline}.breadcrumb-trail .trail-items li:after{-webkit-mask-image:url('data:image/svg+xml;utf8, ');mask-image:url('data:image/svg+xml;utf8, ');content:'';margin:0 .4rem;display:inline-block;vertical-align:middle;line-height:1}.breadcrumb-trail .trail-items li:last-child:after{display:none}.bloghash-breadcrumbs{font-size:1.4rem;border-width:0}.bloghash-widget.widget:not(.widget_text):not(.hester-core-custom-list-widget) ul{list-style:none;margin-left:0;margin-right:0}#main .bloghash-widget{overflow:hidden}#main .bloghash-widget{margin-bottom:4rem}.wp-block-heading{margin-top:0;position:relative;display:block;margin-bottom:2.5rem}.widget ul{line-height:1.5}.widget ul:last-child{margin-bottom:0}.widget ul:not(.wp-block-social-links) li{margin-bottom:1rem}.widget ul:not(.wp-block-social-links) li:last-child{margin-bottom:0}.widget.widget_block li a{position:relative;z-index:0}.bloghash-entry>:first-child,.wp-block-group__inner-container>:first-child{margin-top:0}.bloghash-entry>:last-child,.wp-block-group__inner-container>:last-child{margin-bottom:0}.entry-content ul:not(.wp-block-latest-posts) li{margin-bottom:.64rem}.bloghash-entry ul:not(.wp-block-latest-posts){list-style:disc}.bloghash-entry ul ul{list-style:circle}.bloghash-entry ul:not(.wp-block-latest-posts){margin-left:4rem}.bloghash-entry ul:not(.wp-block-social-links) li:not(.blocks-gallery-item):last-child{margin-bottom:0}.bloghash-entry ul ul{margin-top:.64rem;margin-bottom:0}.bloghash-entry ul:not(.wp-block-latest-posts){margin-bottom:2rem;margin-top:2rem}.bloghash-entry p{margin-bottom:1.5rem;margin-top:1.5rem}.author-avatar img{border-radius:var(--bloghash-full-radius);width:3rem;vertical-align:middle;margin-right:.8rem;display:inline-block;outline:1px solid rgba(185,185,185,.4)}#main .content-area .entry-meta a{color:inherit}.entry-meta{font-size:1.3rem;font-weight:600;margin-top:1.2rem}.entry-meta .bloghash-icon{height:1.827rem;margin-right:.7rem;vertical-align:text-bottom}.entry-meta .entry-meta-elements>span{padding:0 1rem;line-height:1.2}.entry-meta .entry-meta-elements>span.posted-on{line-height:1.5}.entry-meta .entry-meta-elements>span,.entry-meta .entry-meta-elements>span .posted-by{-js-display:inline-flex;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.entry-meta .entry-meta-elements>span:first-child{padding-left:0}.entry-meta .entry-meta-elements>span:last-child{margin-right:0;padding-right:0}.entry-meta .entry-meta-elements>span:before{content:'';position:relative;left:-1.1rem;width:4px;height:4px;border-radius:100%;background-color:var(--bloghash-primary)}.entry-meta .entry-meta-elements>span:first-child:before{display:none}.single-post .entry-content{margin-top:4rem}.single .post-category{margin-bottom:.3rem;font-size:1.4rem}.single .post-category a{-js-display:inline-flex;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:0 .4rem .8rem}.single .entry-header{text-align:start;margin-bottom:1rem}.single .entry-meta{text-align:start;margin-top:1.6rem}.single .entry-content{margin-bottom:5rem}.single.bloghash-page-title-align-left .bloghash-article>.entry-header,.single.bloghash-page-title-align-left .bloghash-article>.post-category{text-align:start}.single.bloghash-page-title-align-left .bloghash-article>.entry-meta>.entry-meta-elements{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#cancel-comment-reply-link{font-size:1.3rem;border-radius:var(--bloghash-normal-radius);border:.2rem solid currentColor;font-weight:500;padding:.4rem .7rem;line-height:1;text-decoration:none;text-transform:capitalize;margin-left:1.4rem;color:inherit}button.bloghash-animate-arrow{-webkit-appearance:none;border:none;-webkit-box-shadow:none;box-shadow:none;background:0 0;outline:none}.bloghash-animate-arrow .arrow-bar{-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}.bloghash-animate-arrow svg{vertical-align:middle}.bloghash-animate-arrow.right-arrow svg{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.bloghash-animate-arrow.right-arrow .arrow-bar{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.bloghash-animate-arrow.right-arrow .arrow-handle{-webkit-transform:translateX(.6rem);-ms-transform:translateX(.6rem);transform:translateX(.6rem)}.bloghash-hamburger{padding:0;display:inline-block;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger-box{width:2.5rem;height:1.4rem;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;margin-top:-.1rem}.hamburger-inner,.hamburger-inner:before,.hamburger-inner:after{width:2.8rem;height:2px;background-color:#111827;border-radius:var(--bloghash-normal-radius);position:absolute}.hamburger-inner:before,.hamburger-inner:after{content:"";display:block}.hamburger-inner:before{top:-5px}.hamburger-inner:after{bottom:-5px}.bloghash-mobile-nav{order:1;display:none;margin-left:2.4rem}.bloghash-hamburger,.bloghash-mobile-nav{-webkit-box-align:center;-ms-flex-align:center;align-items:center}body:not(.is-mobile-menu-active) .bloghash-hamburger .hamburger-box .hamburger-inner:before{width:1.5rem}.bloghash-hamburger{-js-display:inline-flex;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;border-radius:var(--bloghash-normal-radius)}.bloghash-hamburger .hamburger-inner,.bloghash-hamburger .hamburger-inner:before,.bloghash-hamburger .hamburger-inner:after{background-color:currentColor}#bloghash-header:after{content:'';position:fixed;top:100%;left:0;right:0;height:100vh;background-color:rgba(255,255,255,.85);z-index:991;opacity:0;visibility:hidden;will-change:opacity,visibility;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media only screen and (min-width:600px){.site .bloghash-flex-row .start-sm{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.site .bloghash-flex-row .end-sm{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end;margin-left:auto}}@media only screen and (min-width:782px){.site .bloghash-flex-row .col-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}.site .bloghash-flex-row .col-md.flex-basis-auto{-ms-flex-preferred-size:auto;flex-basis:auto}}@media only screen and (max-width:868px){.bloghash-hide-mobile-tablet{display:none!important}.bloghash-container{padding:0 3rem}.bloghash-header-widgets .bloghash-header-widget,.bloghash-header-widgets .bloghash-header-widget.bloghash-header-widget__button{padding-left:1rem;padding-right:1rem}.bloghash-mobile-nav{margin-left:1.6rem}}@media only screen and (max-width:599px){#page .alignleft{float:none;margin:2rem auto}#bloghash-header-inner .bloghash-widget-wrapper,.bloghash-header-element,.bloghash-header-widgets .bloghash-header-widget{position:static}.bloghash-header-widgets .dropdown-item:after{display:none}.author-avatar img{display:none}}@media only screen and (max-width:480px){#page{min-height:-webkit-fill-available}}@media only screen and (max-width:960px){#bloghash-topbar>.bloghash-container>.bloghash-flex-row>div .bloghash-topbar-widget{padding-top:.6rem;padding-bottom:.6rem}#bloghash-topbar .bloghash-topbar-widget{padding-left:.8rem;padding-right:.8rem}.bloghash-topbar__separators-regular #bloghash-topbar .bloghash-topbar-widget:after{margin-left:.8rem}#main>.bloghash-container{display:block}#primary{max-width:100%!important;padding-left:0!important;padding-right:0!important;margin-top:4rem}.site-main #secondary{width:100%;margin-top:4rem}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.site .bloghash-flex-row:after{content:'';display:block;min-height:inherit;font-size:0}.bloghash-btn,body:not(.wp-customizer) input[type=submit]{height:1rem}#main>.bloghash-container #primary{-ms-flex-preferred-size:0%;flex-basis:0%}}.bloghash-btn,input[type=submit]{background-color:var(--bloghash-primary)}#masthead .bloghash-header-widgets .dropdown-item:after{border-bottom-color:var(--bloghash-primary);outline:none!important}.bloghash-header-widgets .dropdown-item{border-top-color:var(--bloghash-primary)}::-webkit-selection{background-color:var(--bloghash-primary);color:var(--bloghash-white)}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2)}::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.4)}a.bloghash-btn span{vertical-align:baseline;line-height:normal}@media (prefers-reduced-motion:reduce){*{animation-duration:0s!important}}.wp-block-latest-posts.wp-block-latest-posts__list li{margin-bottom:1.6rem}#page .wp-block-latest-posts__featured-image.alignleft{margin-right:1em}.wp-block-latest-posts__featured-image,.wp-block-latest-posts__featured-image img{border-radius:calc(var(--bloghash-radius) - .7rem)}.wp-block-latest-posts__featured-image img{box-shadow:2px 2px 3px 0px rgba(93,112,234,.1)}.wp-block-latest-posts__post-title{margin:1rem 0 0;display:block;font-weight:600}@media only screen and (max-width:599px){#page .wp-block-latest-posts__featured-image{width:100%;max-width:max-content}#page .wp-block-latest-posts__featured-image.alignleft{margin-left:0;margin-right:0}}.post-category .cat-links a.cat-3{color:#525ceb;background:#dddffb}:root{--bloghash-primary:#525ceb;--bloghash-primary_80:#dddffb;--bloghash-primary_15:#6c75ee;--bloghash-primary_27:rgba(82,92,235,.27);--bloghash-primary_10:rgba(82,92,235,.1)}#bloghash-topbar{background:rgba(247,229,183,.35)}#bloghash-topbar{border-style:solid}.bloghash-topbar-widget:after{background-color:#ccc}#bloghash-topbar{color:#002050}.bloghash-topbar-widget__text a{color:#302d55}#bloghash-header-inner{background:#fff}#bloghash-header,.bloghash-header-widgets a:not(.bloghash-btn),.bloghash-logo a,.bloghash-hamburger{color:#131315}.bloghash-header-widget:after{background-color:#ccc}@media screen and (max-width:960px){#bloghash-header-inner .bloghash-nav{display:none;color:#000}.bloghash-mobile-nav{display:inline-flex}#bloghash-header-inner{position:relative}#bloghash-header-inner .bloghash-nav>ul>li>a{color:inherit}#bloghash-header-inner .site-navigation{display:none;position:absolute;top:100%;width:100%;height:100%;min-height:100vh;left:0;right:0;margin:-1px 0 0;background:#fff;border-top:1px solid #eaeaea;box-shadow:0 15px 25px -10px rgba(50,52,54,.125);z-index:999;font-size:1.7rem;padding:0}#bloghash-header-inner .site-navigation>ul{overflow-y:auto;max-height:68vh;display:block}#bloghash-header-inner .site-navigation>ul>li>a{padding:0!important}#bloghash-header-inner .site-navigation>ul li{display:block;width:100%;padding:0;margin:0;margin-left:0!important}#bloghash-header-inner .site-navigation>ul a{padding:0;position:relative;background:0 0}#bloghash-header-inner .site-navigation>ul li{border-bottom:1px solid #eaeaea}#bloghash-header-inner .site-navigation>ul>li:last-child{border-bottom:0}#bloghash-header-inner .site-navigation>ul a>span{padding:10px 30px!important;width:100%;display:block}#bloghash-header-inner .site-navigation>ul a>span:after,#bloghash-header-inner .site-navigation>ul a>span:before{display:none!important}}.bloghash-nav.bloghash-header-element,.bloghash-header-layout-2 .bloghash-header-widgets{font-weight:600;font-family:"Inter Tight",Helvetica,Arial,sans-serif;font-size:1.7rem;line-height:1.5}#secondary{width:30%}body:not(.bloghash-no-sidebar) #primary{max-width:70%}.bloghash-layout__boxed-separated #content>article,.bloghash-layout__boxed-separated.bloghash-sidebar-style-2 #secondary .bloghash-widget{background-color:#fff}body{color:#002050}h1,h2,h4,a,.entry-meta,.wp-block-heading{color:#0a0a0a}:root{--bloghash-secondary:#0a0a0a}.bloghash-container{max-width:1480px}.bloghash-logo img{max-height:44px}.bloghash-logo .logo-inner{margin-top:25px;margin-right:3px;margin-bottom:25px}@media only screen and (max-width:768px){.bloghash-logo .logo-inner{margin-top:25px;margin-right:1px;margin-bottom:25px}}.bloghash-breadcrumbs{padding-top:15px;padding-bottom:15px}.bloghash-breadcrumbs{background:#fff9f3}.bloghash-breadcrumbs{border-color:#ffe7d2;border-style:solid;border-top-width:1px;border-bottom-width:1px}html{font-size:62.5%}@media only screen and (max-width:768px){html{font-size:53%}}@media only screen and (max-width:480px){html{font-size:50%}}*{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}body{font-family:"Be Vietnam Pro",Helvetica,Arial,sans-serif;font-size:1.7rem;line-height:1.75}h1,h2,h4{font-weight:700;font-style:normal;text-transform:none;text-decoration:none;font-family:"Be Vietnam Pro",Helvetica,Arial,sans-serif}h1{font-weight:700;font-size:4rem;line-height:1.4}h2{font-weight:700;font-size:3.6rem;line-height:1.4}h4{font-weight:700;font-size:2.4rem;line-height:1.4}#secondary .bloghash-widget .wp-block-heading{font-size:1.8rem}.single-post .entry-content{font-size:1.6rem}.bloghash-btn,body:not(.wp-customizer) input[type=submit]{color:#fff;border-color:;border-width:.1rem;border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.bloghash-btn,body:not(.wp-customizer) input[type=submit]{font-weight:500;font-family:"Be Vietnam Pro",Helvetica,Arial,sans-serif;font-size:1.8rem}.post-category .cat-links a.cat-3{color:#fff;background:#525ceb}.wp-block-heading{margin-top:2.5rem}.noptin-form-footer .noptin-optin-field-wrapper:not(.noptin-optin-field-wrapper-hidden) .noptin-form-field{height:unset!important;min-height:4.6rem!important;font-weight:500;font-size:1.4rem}#bloghash-topbar>.bloghash-container>.bloghash-flex-row>div{display:flex;justify-content:center;text-align:center}:focus{outline:0}button::-moz-focus-inner{padding:0;border:0}.dropdown-item{position:relative}.ekit-wid-con .ekit-review-card--date,.ekit-wid-con .ekit-review-card--desc{grid-area:date}.ekit-wid-con .ekit-review-card--image{width:60px;height:60px;grid-area:thumbnail;min-width:60px;border-radius:50%;background-color:#eae9f7;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:1rem;position:relative}.ekit-wid-con .ekit-review-card--thumbnail{grid-area:thumbnail;padding-right:1rem}.ekit-wid-con .ekit-review-card--name{grid-area:name;font-size:14px;font-weight:700;margin:0 0 .25rem}.ekit-wid-con .ekit-review-card--stars{grid-area:stars;color:#f4be28;font-size:13px;line-height:20px}.ekit-wid-con .ekit-review-card--comment{grid-area:comment;font-size:16px;line-height:22px;font-weight:400;color:#32323d}.ekit-wid-con .ekit-review-card--actions{grid-area:actions}.ekit-wid-con .ekit-review-card--posted-on{display:-webkit-box;display:-ms-flexbox;display:flex;grid-area:posted-on}.screen-reader-text{position:absolute;top:-10000em;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}:root{--page-title-display:block}h1.entry-title{display:var(--page-title-display)}.e-contact-buttons-var-8 .e-contact-buttons__contact-icon-container{align-items:center;display:flex;grid-area:1/1/3/2}.e-contact-buttons-var-8 .e-contact-buttons__contact-title{color:var(--e-contact-buttons-contact-title-text-color);grid-area:1/2/2/3;font-size:16px;font-weight:600;line-height:24px}.e-contact-buttons-var-8 .e-contact-buttons__contact-description{color:var(--e-contact-buttons-contact-description-text-color);grid-area:2/2/3/3;font-size:12px;font-weight:300;line-height:16px}.ss-popup-overlay .ss-copy-action .ss-button,.ss-popup-overlay .ss-popup .ss-close-modal,.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network>a{border:0;text-shadow:none;-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none;text-transform:none;letter-spacing:0}.ss-svg-icon{height:16px;width:auto;vertical-align:text-bottom;fill:currentColor}.ss-envelope-color{background-color:#323b43}.ss-facebook-color{background-color:#1877f2}.ss-twitter-color{background-color:#000}.ss-linkedin-color{background-color:#2867b2}.ss-copy-color{background-color:#323b43}.ss-print-color{background-color:#323b43}.ss-mix-color{background-color:#ff8226}.ss-clearfix:after{content:"";display:table;clear:both}:root{--ss-wpadminbar-height:0px}.ss-popup-overlay{display:none;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Arial,"Helvetica Neue",sans-serif;-webkit-font-smoothing:initial;content:"";position:fixed;top:0;bottom:0;left:0;right:0;z-index:99999;background:rgba(202,202,202,.75);opacity:0}.ss-popup-overlay .ss-copy-action{position:relative;display:none}.ss-popup-overlay .ss-copy-action .ss-copy-action-field{border:1px solid rgba(0,0,0,.1);border-radius:2px;color:#323b43;font-family:inherit;font-size:16px;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:48px!important;line-height:48px!important;padding:0 120px 0 50px!important;text-shadow:none;-webkit-box-shadow:none;box-shadow:none;outline:0;background-color:#fff;margin:0}.ss-popup-overlay .ss-copy-action .ss-button{font-weight:400;font-family:inherit;position:absolute;right:6px;top:5px;background-color:#557ceb;color:#fff;padding:0;line-height:38px;height:38px;width:105px;font-size:16px;z-index:9;border-radius:2px}.ss-popup-overlay .ss-copy-action svg{position:absolute;height:24px;width:24px;top:50%;left:15px;margin-top:-12px;fill:#dadada}.ss-popup-overlay .ss-popup{opacity:0;border-radius:2px;max-width:90%;max-height:90%;width:720px;height:auto}.ss-popup-overlay .ss-popup .ss-popup-heading{display:block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:16px;font-weight:300;color:#323b43;background-color:#fff;line-height:58px;height:58px;padding:0 0 0 24px;margin:0;border-top-left-radius:4px;border-top-right-radius:4px}.ss-popup-overlay .ss-popup .ss-close-modal{margin-left:auto;padding:0 24px;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#a9a9a9}.ss-popup-overlay .ss-popup .ss-close-modal svg{width:16px;height:16px}.ss-popup-overlay .ss-popup .ss-popup-content{position:relative;top:3px;left:0;right:0;bottom:0;max-height:70vh;background-color:#fff;overflow-y:scroll;padding:24px 24px 20px;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.ss-popup-overlay .ss-popup .ss-popup-networks{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -6px}.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network{-webkit-box-sizing:border-box;box-sizing:border-box;width:33.33%;padding:0 6px 6px;-ms-flex-negative:0;flex-shrink:0;float:left;display:inline-block}.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network>a{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;padding:0 15px 0 0;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#fff;border-radius:2px;font-weight:500;font-size:13px;vertical-align:middle;-webkit-backface-visibility:hidden;white-space:nowrap;text-overflow:ellipsis}.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network>a span:first-child{position:relative;z-index:2;height:40px;width:40px;text-align:center;line-height:40px;font-size:16px;margin-right:10px;background-color:rgba(0,0,0,.15);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network>a svg{fill:#fff;height:16px;width:inherit;z-index:1}.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network>a span:first-child:before{content:"";position:absolute;left:0;top:0;background-color:rgba(0,0,0,.1)}.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network>a span{position:relative;z-index:3}.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network>a:before{position:absolute;content:"";background-color:rgba(255,255,255,0);top:0;left:0;bottom:0;right:0;z-index:1}.ss-share-network-tooltip{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Arial,"Helvetica Neue",sans-serif;-webkit-font-smoothing:initial;position:absolute;line-height:1;left:100%;margin-left:12px;background-color:rgba(56,70,84,.85);top:50%;width:auto;white-space:nowrap;padding:8px 10px;border-radius:2px;font-size:12px;color:rgba(255,255,255,.9);z-index:2;opacity:0;-webkit-transform:translateX(-7px) translateY(-50%);-ms-transform:translateX(-7px) translateY(-50%);transform:translateX(-7px) translateY(-50%)}.ss-copy-action .ss-share-network-tooltip{left:auto;margin-left:0;right:100%;margin-right:12px;-webkit-transform:translateX(7px) translateY(-50%);-ms-transform:translateX(7px) translateY(-50%);transform:translateX(7px) translateY(-50%)}@media screen and (max-width:782px){.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network{width:50%}}@media screen and (max-width:500px){.ss-popup-overlay .ss-popup .ss-popup-networks .ss-popup-network{width:100%}}.elementor-kit-855{--e-global-color-primary:#6ec1e4;--e-global-color-secondary:#54595f;--e-global-color-text:#7a7a7a;--e-global-color-accent:#61ce70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500}h1.entry-title{display:var(--page-title-display)}
Range Sum Query Using Prefix Sum - TechAlgoSpotlight
Skip to content A Range Sum Query is a query for finding all the sum of a subarray or range from a given integer array. This type of query is commonly used in various array algorithms, Specifically in sum computation.
In this article, I am going to show everything about range sum queries with examples.
For finding the range sum query, We have to find the first prefix sum of the given array.
What is Prefix Sum A prefix sum is an integer array, Where each element at index i is the sum of all elements in the original array from the start-up to the i index.
Formula of Prefix Sum prefix_sum[i] = prefix_sum[iā1] + arr[i]
Prefix Sum Program in Java Java public class PrefixSum {
public static void main ( String [] args ) {
// Example array
int [] arr = { 1 , 2 , 3 , 4 , 5 };
// Compute the prefix sum array
int [] prefixSum = computePrefixSum (arr);
// Print the prefix sum array
for ( int sum : prefixSum) {
System . out . print (sum + " " );
}
}
// Method to compute prefix sum
public static int [] computePrefixSum ( int [] arr ) {
int n = arr . length ;
int [] prefixSum = new int [n];
// Initialize the first element of prefix sum array
prefixSum[ 0 ] = arr[ 0 ];
// Compute the prefix sum for each element
for ( int i = 1 ; i < n; i++) {
prefixSum[i] = prefixSum[i - 1 ] + arr[i];
}
return prefixSum;
}
}
With the help of prefix sum, We can find range sum queries of any array with optimal time and space complexity .
Range Sum Query Program in Java using Prefix Sum Java public class RangeSumQuery {
public static void main ( String [] args ) {
// Example array
int [] arr = { 1 , 2 , 3 , 4 , 5 };
// Compute the prefix sum array
int [] prefixSum = computePrefixSum (arr);
// Example range sum queries
System . out . println ( "Sum of elements from index 1 to 3: " + rangeSum (prefixSum, 1 , 3 ));
System . out . println ( "Sum of elements from index 0 to 4: " + rangeSum (prefixSum, 0 , 4 ));
}
// Method to compute prefix sum
public static int [] computePrefixSum ( int [] arr ) {
int n = arr . length ;
int [] prefixSum = new int [n];
// Initialize the first element of prefix sum array
prefixSum[ 0 ] = arr[ 0 ];
// Compute the prefix sum for each element
for ( int i = 1 ; i < n; i++) {
prefixSum[i] = prefixSum[i - 1 ] + arr[i];
}
return prefixSum;
}
// Method to compute range sum using prefix sum array
public static int rangeSum ( int [] prefixSum , int l , int r ) {
if (l == 0 ) {
return prefixSum[r];
} else {
return prefixSum[r] - prefixSum[l - 1 ];
}
}
}
Output Sum of elements from index 1 to 3: 9
Sum of elements from index 0 to 4: 15
Time Complexity Prefix Sum – O(n) Range Sum – O(1) Space Complexity Conclusion In the Upcoming article, we will see more about prefix sum and range sum queries and their requirements in algorithms.