a:6:{i:0;s:38474:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Scenic Scandinavia Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.bhramandeshvidesh.com/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.bhramandeshvidesh.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Scenic Scandinavia Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
									<div class="fo dt w100"> 
					<div class="dtc vat ttw-detail pr20px pr">					
												<ul class="lsn gallery-slide" id="bxlider_ins">
																	<li>
										<div class="imgFrame m0a dib bdr">
										<div class="imgFrame picBg dtc ac vam lh0">	<a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106226.jpg">
										<div class="imgWidth" style="background-image: url(https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106226.jpg);background-size:cover;background-position:center;"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106226.jpg"  alt="Scenic Scandinavia Tour" title="Scenic Scandinavia Tour" class="imga"  />									</div></a>
										</div>
										</div>
										</li>
																				<li>
										<div class="imgFrame m0a dib bdr">
										<div class="imgFrame picBg dtc ac vam lh0">	<a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106227.jpg">
										<div class="imgWidth" style="background-image: url(https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106227.jpg);background-size:cover;background-position:center;"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106227.jpg"  alt="Scenic Scandinavia Tour" title="Scenic Scandinavia Tour" class="imga"  />									</div></a>
										</div>
										</div>
										</li>
																				<li>
										<div class="imgFrame m0a dib bdr">
										<div class="imgFrame picBg dtc ac vam lh0">	<a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106228.jpg">
										<div class="imgWidth" style="background-image: url(https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106228.jpg);background-size:cover;background-position:center;"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106228.jpg"  alt="Scenic Scandinavia Tour" title="Scenic Scandinavia Tour" class="imga"  />									</div></a>
										</div>
										</div>
										</li>
																	</ul>
							
							<ul class="lsn" id="bxslider-pager"><li data-slideIndex=""><a href=""><img src="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106226.jpg"></a></li><li data-slideIndex=""><a href=""><img src="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106227.jpg"></a></li><li data-slideIndex=""><a href=""><img src="https://ttw.wlimg.com/package-images/photo-big/dir_12/350588/106228.jpg"></a></li></ul>					
					<script>
					var $j = jQuery.noConflict();
					var realSlider= $j("ul#bxlider_ins").bxSlider({
					      speed:500,
					      pager:false,
					      auto: true,
					      slideWidth: 450,
					      slideMargin: 0,
					      nextText:'',
					      prevText:'',
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					        changeRealThumb(realThumbSlider,newIndex);
					        
					      }
					      
					    });
					    
					    var realThumbSlider=$j("ul#bxslider-pager").bxSlider({
					      minSlides: 4,
					      maxSlides: 4,
					      slideWidth: 200,
					      slideMargin: 5,
					      moveSlides: 1,
					      pager:false,
					      speed:1000,
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      nextText:'<span></span>',
					      prevText:'<span></span>',
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					
					      }
					    });
					    
					    linkRealSliders(realSlider,realThumbSlider);
					    
					    if($j("#bxslider-pager li").length<5){
					      $j("#bxslider-pager .bx-next").hide();
					    }
					
					// sincronizza sliders realizzazioni
					function linkRealSliders(bigS,thumbS){
					  
					  $j("ul#bxslider-pager").on("click","a",function(event){
					    event.preventDefault();
					    var newIndex=$j(this).parent().attr("data-slideIndex");
					        bigS.goToSlide(newIndex);
					  });
					}
					
					//slider!=$thumbSlider. slider is the realslider
					function changeRealThumb(slider,newIndex){
					  
					  var $thumbS=$j("#bxslider-pager");
					  $thumbS.find('.active').removeClass("active");
					  $thumbS.find('li[data-slideIndex="'+newIndex+'"]').addClass("active");
					  
					  if(slider.getSlideCount()-newIndex>=4)slider.goToSlide(newIndex);
					  else slider.goToSlide(slider.getSlideCount()-4);
					
					}
					
					</script>
					</div>
			        <div class="dtc">
			        <p class="b xlarge mb10px">Scenic Scandinavia Tour</p>
					
											<p class="mb5px"><b>Duration :</b> 
						9 Nights / 10 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Tallinn, Stockholm, Bergen, Copenhagen, Helsinki, Karlstad, Oslo</p>
												<div class="fo mt20px mb20px xxlarge">
						<p class="xxlarge b dif mb2px">Price</p>
						<p class="xxsmall">On Request</p>
						</div>
												<div class="mt12px mb7px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.bhramandeshvidesh.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Scenic Scandinavia Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px ts0 xxlarge dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="55312"/>
						</form>
						
												</div>
											<br/>
					</div>       
					</div>
											<div class="mt30px mb30px">
						<div class="b xxlarge mb10px">
								   					Overview
		   											</div>					
						<p class="aj">The land of the Mid-night Sun - Scandinavia - only with Thomas Cook.<br />
ALL delicious Jain / vegetarian / non-vegetarian meals included.<br />
Sail on board the luxurious Viking / Silja line to Stockholm.<br />
Guided city tour of Helsinki.<br />
See the famous Sibelius Park in Helsinki.<br />
Day Excursion to Tallinn.<br />
Guided city tour of Stockholm.<br />
Visit the Vasa Museum, housing the majestic 17th Century royal warship Vasa.<br />
Visit Karlstad - Swedens loveliest lakeside town.<br />
Guided city tour of Oslo.<br />
Visit the Viking Ship Museum with its remarkably preserved ships from the Viking Period.<br />
Norway in a Nutshell - a combination of spectacular train rides and impressive trips by boat and bus as you travel from Oslo to Bergen through a panorama of spectacular scenery and glorious views of the snow-capped fjords, cascading waterfalls and green foliage.<br />
Guided city tour of Bergen - the gateway to the fjords where the world is really your oyster.<br />
Enjoy a fun filled ride on the Funicular train to the top of the mountain in Bergen.<br />
Guided city tour of Copenhagen.<br />
Visit one of the most famous Danish beer brands - Carlsberg brewery.<br />
Entrance to the Tivoli gardens.<br />
Professional, friendly, multilingual and experienced Indian Tour Managers traveling with you throughout your tour.<br />
Visit 05 countries in 10 days: Finland, Estonia, Sweden, Norway and Denmark.Airfare, Visa and Medical Insurance.<br />
Arrival and Departure Transfers.<br />
No porterage included.<br />
Taxes as applicable are extra.<br />
The tour cost does not include POE charges and passport charges.<br />
Any expenses of personal nature such as porterage, laundry expenses, wines, mineral water, food and drink not in the regular menu provided by us, mini bar, telephone calls etc.<br />
Tips of any nature i.e. drivers, guides, etc.<br />
Meals other than that what is mentioned in your itinerary.<br />
Cost of excursions, city sightseeing, entrance fees and local guides availed of by the passengers, other than that mentioned in - What your tour price includes12-0413-09</p>
						</div>
														<div class="mt30px b xlarge">
												   					Detailed Tour Itinerary
				   													</div>		   
								<br/>
																			<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 1											
											:</b> Welcome to Thomas Cook’s ‘Scenic Scandinavia’ Tour. Arrive into Helsinki - the city of four										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												Today, you embark on a spectacular tour of Scandinavia as you board your flight to the Finnish Capital, Helsinki. On arrival proceed to your conveniently located hotel on your own. Check-in post 1400 hrs. ( Please reconfirm with your travel agent for exact timings and details about your tour, hotels and meeting place with the tour manager). Later, you have some free time to explore this modern European cultural city whose urban cosmopolitan lifestyle exists in perfect harmony with nature and is surrounded by the sea and its own exotic archipelago. Tonight, enjoy a delicious Indian dinner at a restaurant.<br />
Overnight at Sokos hotel Scandic or similar in Helsinki.															
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 2											
											:</b> Onto Tallinn. Day Excursion to Tallinn, Estonia’s capital										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After a Scandinavian breakfast at your hotel, proceed for a day trip to Tallinn, Estonia‟s capital on the Baltic Sea, is the country‟s cultural hub. While the old town has been astonishingly well preserved and was inscribed on the UNESCO World Heritage List in 1997, it is now in better shape than ever. Indian lunch will be provided. This magnificent city, the old town and admire the 14th and 15th century architecture with its medieval buildings, spires and narrow, twisting streets. The Estonian maritime city of Tallinn has influences from Germany, Russia, Scandinavia and Italy. Tallinn‟s calendar is lively with festivals of music, film, art, theatre, culture and food as well as sea-faring festivals, Opera Festival and the Tallinn Marathon. Tonight, enjoy a delicious Indian dinner at a restaurant. Later back to the hotel.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 3											
											:</b> Enjoy a guided tour of Helsinki. Board the luxurious cruise and sail into the Swedish capital, Stock										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After a Scandinavian breakfast at your hotel, proceed on a tour of this city with an experienced English-speaking local guide. Enjoy the sights of this beautiful city that range from neoclassical to the modern. See the Senate Square, the Lutheran Tempelliauki Church or „Rocky church of Helsinki‟, which is quarried out of natural bedrock, the Uspenski<br />
Cathedral, the marvelous Sibelius Park, the Presidential Palace, Finland Hall, Opera House and many more interesting sights. Next visit Porvoo, the second oldest city in Finland. Porvoo is a lovely preserved medieval city with old cobblestone streets and red colored warehouses that stretch out along the Porvoo River. This afternoon, enjoy Indian lunch. Later, board the luxurious cruise for a fascinating voyage across the Baltic Sea and through the Swedish archipelago to Stockholm. Tonight, enjoy a Grand Viking buffet dinner on board the cruise. After dinner, you can dance the night away in the nightclub, linger in the various shops, or enjoy the scenery, as we cruise to Stockholm in style.<br />
Overnight on board Silja / Viking Cruise liner.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 4											
											:</b> Arrive into Stockholm - the fashionable Swedish capital. Enjoy a guided tour of this scenic city wit										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After a Scandinavian breakfast on board the cruise, disembark at the picturesque city of Stockholm often called „Beauty on Water‟, situated on an archipelago of 14 islands between Lake Mälaren and the Baltic Sea. Next, proceed for a tour of the Swedish capital accompanied by an experienced local English speaking guide. See the glamorous City Hall, an impressive building, both in terms of architecture and artistic embellishments, where every year the Nobel Prize banquette takes place, the Royal Palace and the Cathedral. Visit the Old Town, renowned for its picturesque narrow alleys that date from the middle ages. Next visit the famous Vasa Museum, housing the majestic 17th century royal warship Vasa, which sank on her maiden voyage in 1628 and was salvaged in 1961. Today, enjoy an Indian lunch at a local restaurant. After lunch you have some free time to enjoy this beautiful city on your own. Later this evening, enjoy a sumptuous Indian dinner at a local restaurant.<br />
Overnight at Hotel Quality / Scandic or similar in Stockholm.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 5											
											:</b> Norway – The land of serene fjords. Onto Oslo – The Viking capital. En route visit Karlstad, one										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After a Scandinavian breakfast, sit back and relax in your coach, as we drive to Oslo – the Viking capital where fjords and mountains meet. Enroute, visit the town of Karlstad, situated between the cities of Stockholm and Oslo. Lying on the northern shores of Lake Vanern this town which is bisected by the Klaralven River, provides visitors with an opportunity to completely soak in its splendid beauty. This afternoon, Indian lunch will be provided. On arrival into Oslo, check in and relax in the comforts of your hotel. Tonight, a hot Indian dinner awaits you at a restaurant. Overnight at Hotel Scandic / Quality / Radisson or similar in Oslo.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 6											
											:</b> City tour of Oslo - the home of Nobel Peace Prize Ceremony.										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After a Scandinavian breakfast, proceed for a tour of this marvelous city with an experienced English speaking local guide. See the Town House, the House of Parliament, the Royal Palace and the majestic Akershus fortress. Visit the magnificent and unique Vigeland Sculpture Park, the highlight of your city tour and Karl Johan street. Later, we visit the Viking Ship Museum, where you can see remarkably preserved Viking Ships. This museum offers a wide collection of artifacts from the Viking Period. Norway is often called the „Cradle of Skiing‟ which you<br />
will encounter when you visit the Hollmenkollen Ski Jump area, to admire the dizzying panorama. Enjoy these special sights and many more on your guided tour. This afternoon, enjoy an Indian lunch. This evening is free to explore the city of Oslo on your own. Tonight, enjoy a sumptuous Indian dinner at a local restaurant.<br />
Overnight at Hotel Scandic / Quality / Radisson or similar in Oslo.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 7											
											:</b> A day full of fun, adventure and ever changing beautiful scenery as we take you on Norway’s most										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												Today, after a Scandinavian breakfast get ready to travel on one of Norway‟s most popular trips "Norway in a nutshell‟. A combination of spectacular train rides and impressive trips by boat and bus. Be spellbound as you travel through some of the most magnificent scenery in Fjord Norway. Indian lunch will be provided. You will be first transferred to the station to board your scenic train to Myrdal, where you change to the Flam railway line, a masterpiece of engineering set in wild and wonderful scenery to travel to Flam. Feast your eyes on the ever-changing panorama of huge mountains and thundering waterfalls as the train glides through tunnels and open stretches on its way down to wild Flam valley. Wander around the idyllic countryside, before embarking on an enchanting boat ride through the spectacular fjords. Be amazed with the splendid scenery as the boat takes you from Aurlandsfjord into the Naeroyfjord, one of the narrowest fjord in Europe, surrounded by mighty mountains of upto 1800 meters. On arrival at scenic Gudvangen, board your coach as you travel through the impressive Norwegian landscape to Bergen. Pass charming villages before arriving into Bergen, „the Gateway to the Fjords‟. A hearty Indian dinner awaits you at a local restaurant before you check in to your hotel.<br />
Overnight at Hotel Thon / Quality or similar in Bergen.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 8											
											:</b> Discover Bergen on a guided tour. Ride the Funicular for spectacular views.										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												This morning, after a Scandinavian breakfast, be accompanied by an experienced English-speaking local guide<br />
for your city tour of Bergen. Bergen is an international town with small-town charm and atmosphere, surrounded by seven rounded, lush mountains. The Hanseatic wharf Bryggen with its pastel-color wooden houses, winding cobblestone streets, and Old Bergen are just a few of the many attractions that make Bergen a real place of enchantment. Visit the harbor, the fish market; see St. Mary‟s church from the 12th century and one of the most outstanding Romanesque churches in the country. Next, take a fun filled ride on the Funicular train, to the top of the mountain and enjoy the panoramic and uninterrupted views of the city and its surroundings. Here, you will also have a chance to shop at the many exciting outlets. Indian lunch will be provided. Later, this evening proceed to the airport to catch your flight for Copenhagen. Arrive Copenhagen and check–in to the hotel. Next enjoy a delicious Indian dinner at a local restaurant.<br />
Overnight at Hotel First / Scandic / Comfort or similar in Copenhagen.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 9											
											:</b> Enjoy a guided city tour of Copenhagen. Visit one of the most famous Danish beer brands - Carlsber										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After a Scandinavian breakfast, proceed with your English-speaking local guide for a tour of Scandinavia‟s largest and liveliest metropolis. See the City Hall, the Parliament building, the Amalienborg Palace, which is the home of the royal family, the Stock Exchange, Gefion fountain, Little Mermaid and many other interesting sights. Later we will visit one of the most famous Danish beer brands – Carlsberg Brewery. Here you will learn about the brewing process, see the collection of over 21,000 beer bottles from all over the world and visit the stables with the “brewery horses”. Enjoy Indian Lunch. Later visit the famous Tivoli Gardens. Here you will have an opportunity to enjoy the various rides on your own. Later tonight, enjoy Indian dinner at a local restaurant.<br />
Overnight at Hotel First / Scandic / Comfort or similar in Copenhagen.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 10											
											:</b> Fly home with wonderful memories										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After a Scandinavian breakfast, we check out and proceed to the airport (on your own) for your flight back home. Arrive home with pleasant memories of your European tour, which we are sure you will treasure for a lifetime. Do spare a few minutes to fill in the feedback form and hand it to your Tour Manager. Your valued suggestions will be most appreciated.			
														   
											</div> 
											</div>
																			<script>
								jQuery(document).ready(function() {
									//jQuery('.product-detail').css('display','none');
								    jQuery(".sub-title").click(function() {
								        var $this = jQuery(this);
										  jQuery('.w-title').addClass('h15px',400);
								          $this.find('.w-title').removeClass('h15px',400);
										  jQuery('.product-detail').slideUp();
								          $this.next().slideDown();
								          if($this.find('i').hasClass('fa-angle-up')){
								          	$this.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
								          } else {
								          	$this.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
								          }
								        });
									});
								</script>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>Hotel</li>
																						<li>Meals</li>
																						<li>Transfers</li>
																			</ul>
								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Exclusions</p>
								</div>
								
								<ul><li>Airfare, Visa and Medical Insurance.</li><li>
Arrival and Departure Transfers.</li><li>
No porterage included.</li><li>
Taxes as applicable are extra.</li><li>
The tour cost does not include POE charges and passport charges.</li><li>
Any expenses of personal nature such as porterage, laundry expenses, wines, mineral water, food and drink not in the regular menu provided by us, mini bar, telephone calls etc.</li><li>
Tips of any nature i.e. drivers, guides, etc.</li><li>
Meals other than that what is mentioned in your itinerary.</li><li>
Cost of excursions, city sightseeing, entrance fees and local guides availed of by the passengers, other than that mentioned in - What your tour price includes</li></ul>
								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Specific Departure Dates</p>
								</div>
								
								April: 12, 26, 30<br />
May: 3, 5, 7, 10, 12, 14, 17, 19, 21, 24, 26, 28, 31<br />
June: 2, 4, 7, 9, 11, 14, 16, 18, 21, 23, 25, 28<br />
July: 5, 12, 19, 26, 30<br />
August: 9, 16<br />
September: 13								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Departure Cities with rates</p>
								</div>
								New Delhi, Mumbai								</div>
									
								<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Terms &amp; Conditions</p>
								</div>				
								<ul>
	<li><strong>Pls note this is just a quotation, rates and availability subject to change<u>.</u> </strong></li>
	<li><strong><u>3.75 % Service Tax will be applicable on Package Cost</u></strong></li>
	<li>Note that the above rates are subject to Availability at the time of Booking.</li>
	<li>No Rooms or Services have been blocked</li>
	<li>Check all inclusions as any additions will occur in extra charges.</li>
	<li>Rates are based on the requested dates</li>
	<li>Current rate of exchange will be applicable at the time of final payment</li>
</ul>								</div>
														
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.bhramandeshvidesh.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Scenic Scandinavia Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="55312"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(12)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-faridabad.htm" title="Packages in Faridabad">Faridabad</a> <b class="alpha50 bn small">(11)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-paris.htm" title="Packages in Paris">Paris</a> <b class="alpha50 bn small">(11)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-manali.htm" title="Packages in Manali">Manali</a> <b class="alpha50 bn small">(11)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-london.htm" title="Packages in London">London</a> <b class="alpha50 bn small">(9)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-shimla.htm" title="Packages in Shimla">Shimla</a> <b class="alpha50 bn small">(9)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-bern.htm" title="Packages in Bern">Bern</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-haridwar.htm" title="Packages in Haridwar">Haridwar</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-berlin.htm" title="Packages in Berlin">Berlin</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-amsterdam.htm" title="Packages in Amsterdam">Amsterdam</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-rishikesh.htm" title="Packages in Rishikesh">Rishikesh</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-vienna.htm" title="Packages in Vienna">Vienna</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-rome.htm" title="Packages in Rome">Rome</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-kufri.htm" title="Packages in Kufri">Kufri</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-brussels.htm" title="Packages in Brussels">Brussels</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-mussoorie.htm" title="Packages in Mussoorie">Mussoorie</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-kullu.htm" title="Packages in Kullu">Kullu</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-dharamshala.htm" title="Packages in Dharamshala">Dharamshala</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-palampur.htm" title="Packages in Palampur">Palampur</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-nainital.htm" title="Packages in Nainital">Nainital</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-dehradun.htm" title="Packages in Dehradun">Dehradun</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-kandy.htm" title="Packages in Kandy">Kandy</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-prague.htm" title="Packages in Prague">Prague</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-nuwara-eliya.htm" title="Packages in Nuwara Eliya">Nuwara Eliya</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-colombo.htm" title="Packages in Colombo">Colombo</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-budapest.htm" title="Packages in Budapest">Budapest</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-vaduz.htm" title="Packages in Vaduz">Vaduz</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-baramulla.htm" title="Packages in Baramulla">Baramulla</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-srinagar.htm" title="Packages in Srinagar">Srinagar</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.bhramandeshvidesh.com/packages-in-dalhousie.htm" title="Packages in Dalhousie">Dalhousie</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(27)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/heritage-holidays-catid.htm" title="Heritage Packages">Heritage</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/forts-palaces-holidays-catid.htm" title="Forts and Palaces Packages">Forts and Palaces</a> <b class="alpha50 bn small">(17)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Packages">Lakes & Rivers</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/camping-holidays-catid.htm" title="Camping Packages">Camping</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/wildlife-nature-holidays-catid.htm" title="Wildlife and Nature Packages">Wildlife and Nature</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.bhramandeshvidesh.com/safari-holidays-catid.htm" title="Safari Packages">Safari</a> <b class="alpha50 bn small">(1)</b></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
								
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:63:"Book Scenic Scandinavia Tour - 9 Nights / 10 Days Tour Packages";i:2;s:176:"book scenic scandinavia tour - 9 nights / 10 days tour packages, forts and palaces tour packages, tallinn, stockholm, bergen, copenhagen, helsinki, karlstad, oslo tour packages";i:3;s:234:"Book Scenic Scandinavia Tour - 9 Nights / 10 Days tour packages from Bhraman Tours and Travels - Get attractive 9 Nights / 10 Days Forts and Palaces  tour packages for  Tallinn, Stockholm, Bergen, Copenhagen, Helsinki, Karlstad, Oslo.";i:4;s:2458:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Tallinn, Stockholm, Bergen, Copenhagen, Helsinki, Karlstad, Oslo"        
		                 },
		      "description": "The land of the Mid-night Sun - Scandinavia - only with Thomas Cook.
ALL delicious Jain / vegetarian / non-vegetarian meals included.
Sail on board the luxurious Viking / Silja line to Stockholm.
Guided city tour of Helsinki.
See the famous Sibelius Park in Helsinki.
Day Excursion to Tallinn.
Guided city tour of Stockholm.
Visit the Vasa Museum, housing the majestic 17th Century royal warship Vasa.
Visit Karlstad - Swedens loveliest lakeside town.
Guided city tour of Oslo.
Visit the Viking Ship Museum with its remarkably preserved ships from the Viking Period.
Norway in a Nutshell - a combination of spectacular train rides and impressive trips by boat and bus as you travel from Oslo to Bergen through a panorama of spectacular scenery and glorious views of the snow-capped fjords, cascading waterfalls and green foliage.
Guided city tour of Bergen - the gateway to the fjords where the world is really your oyster.
Enjoy a fun filled ride on the Funicular train to the top of the mountain in Bergen.
Guided city tour of Copenhagen.
Visit one of the most famous Danish beer brands - Carlsberg brewery.
Entrance to the Tivoli gardens.
Professional, friendly, multilingual and experienced Indian Tour Managers traveling with you throughout your tour.
Visit 05 countries in 10 days: Finland, Estonia, Sweden, Norway and Denmark.Airfare, Visa and Medical Insurance.
Arrival and Departure Transfers.
No porterage included.
Taxes as applicable are extra.
The tour cost does not include POE charges and passport charges.
Any expenses of personal nature such as porterage, laundry expenses, wines, mineral water, food and drink not in the regular menu provided by us, mini bar, telephone calls etc.
Tips of any nature i.e. drivers, guides, etc.
Meals other than that what is mentioned in your itinerary.
Cost of excursions, city sightseeing, entrance fees and local guides availed of by the passengers, other than that mentioned in - What your tour price includes12-0413-09",
		      "name": "Scenic Scandinavia Tour",
		      "telephone": "+91-9711158456"
		    }
		    </script>
			";i:5;N;}